【问题标题】:How to retrieve the records of the table from database to another database如何将表的记录从数据库检索到另一个数据库
【发布时间】:2012-10-25 01:22:32
【问题描述】:

我有两个不同数据库的表:

  • 表 'account' 中的 AccntID
  • 表'tblPolicy'中的AccountTID

现在我想像这样插入“tblPolicy”:

  INSERT INTO dbo.tblPolicy
      ( 

        PolicyID                 ,
        AccountTID               ,
        DistributorID            ,
        CARDNAME                 ,
        DENOMINATION             ,
        RETAILPRICE              ,
        COSTPAYABLE              ,
        ECPAYFEES                ,
        PLUCODE 

      ) 
-- Insert statements for procedure here


select t.* from
(Select  AccountTID=@AccntID, DistributorID=@DistributorID, CARDNAME=@CARDNAME, DENOMINATION=@DENOMINATION, RETAILPRICE=@RETAILPRICE, COSTPAYABLE=@COSTPAYABLE, ECPAYFEES=@ECPAYFEES, PLUCODE=@PLUCODE) t,
account a
where a.AccntID = t.AccountTID --for account

现在我要做的是将此“仅”插入到与具有不同数据库'GENESIS'的'account'表连接的tblPolicy

【问题讨论】:

    标签: sql database stored-procedures sql-server-2005


    【解决方案1】:

    您可以从如下所示的两个数据库中进行选择:

    SELECT table1.SomeField, table2.SomeField
    FROM   [ServerName1].[Database1].[dbo].[Table1] table1
           INNER JOIN [ServerName2].[Database2].[dbo].[Table2] table2
           ON table1.SomeField = table2.SomeField
    

    【讨论】:

    • 如何获取表账户的值到表tblPolicy? @Yaqub 艾哈迈德
    • @Kristian Hernan C. Manuel ,关键是 [ServerName].[DatabaseName].[databaseowner].[tableName]
    • 可以查询account表吗?比如:SELECT * FROM [ServerName].[Database].[dbo].[account]
    • @Yaqub Ahmad 是的,我查询它并且它工作正常。并且知道我收到另一个错误。为链接服务器“(null)”的提供程序“本地服务器”指定了无效的架构或目录.
    • 哎呀,您的链接服务器有问题!我建议发布关于此的另一个问题..
    【解决方案2】:

    关键点是 [ServerName].[DatabaseName].[databaseowner].[tableName]..i.e.完全限定名称

    这应该可以工作

    ;With Cte As
    (
        Select AccountTID=@AccntID
        , DistributorID=@DistributorID
        , CARDNAME=@CARDNAME
        , DENOMINATION=@DENOMINATION
        , RETAILPRICE=@RETAILPRICE
        , COSTPAYABLE=@COSTPAYABLE
        , ECPAYFEES=@ECPAYFEES
        , PLUCODE=@PLUCODE
    )
    
    INSERT INTO GENESIS..dbo.tblPolicy
      ( 
        PolicyID                 ,
        AccountTID               ,
        DistributorID            ,
        CARDNAME                 ,
        DENOMINATION             ,
        RETAILPRICE              ,
        COSTPAYABLE              ,
        ECPAYFEES                ,
        PLUCODE 
    
      ) 
    
    Select t.*
    From Cte t,ECPNWEB..account a WITH (NOLOCK) 
    where a.AccntID = t.AccountTID 
    

    【讨论】:

    • 感谢您的努力,但我怎样才能获得表帐户的值
    • 这是我收到的错误无法在 sysservers 中找到服务器“GENESIS”。执行 sp_addlinkedserver 将服务器添加到 sysservers。
    • @Kristian Hernan C. Manuel 如果您确实从 ECPNWEB 中选择前 10 * 名,那么您不会获得价值。.account a WITH (NOLOCK)
    • @Kristian Hernan C. Manuel 的错误,请检查stackoverflow.com/questions/10226692/…
    • 执行程序时出现此错误。为链接服务器“(null)”的提供程序“本地服务器”指定了无效的架构或目录
    猜你喜欢
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    相关资源
    最近更新 更多