【问题标题】:How to select data of a table from another database in SQL Server?如何从 SQL Server 中的另一个数据库中选择表的数据?
【发布时间】:2009-04-06 05:25:54
【问题描述】:

假设我在测试服务器中有一个名为testdb 的数据库。 我在 prod 服务器中还有一个名为 proddb 的数据库。

现在我想从 proddb 数据库中选择 testdb 数据库表的数据。

如何在 SQL Server 中做到这一点?

另外,我可以使用 oracle 中的 database link 来完成。但是如何在 SQL Server 中做到这一点?

【问题讨论】:

标签: sql sql-server database linked-server


【解决方案1】:

你需要 sp_addlinkedserver()

http://msdn.microsoft.com/en-us/library/ms190479.aspx

例子:

exec sp_addlinkedserver @server = 'test'

然后

select * from [server].[database].[schema].[table]

在你的例子中:

select * from [test].[testdb].[dbo].[table]

【讨论】:

  • 如果需要通过不同的凭据,使用 EXEC sp_addlinkedsrvlogin 'servername', 'false', NULL, 'SqlUser', 'password'
  • 我一直在努力让它工作,发现您也可以使用 SSMS (sqlshack.com/…) 执行此操作,然后它会向您显示所有可用的各种安全等选项 - 我发现我必须设置将其设置为使用当前登录安全上下文以使其工作。
【解决方案2】:

在 SQL Server 2012 及更高版本中,您不需要创建链接。可以直接执行

SELECT * FROM [TARGET_DATABASE].dbo.[TABLE] AS _TARGET

我不知道以前版本的 SQL Server 是否也能正常工作

【讨论】:

【解决方案3】:

我以前用它来通过链接服务器设置对另一台服务器和数据库的查询:

EXEC sp_addlinkedserver @server='PWA_ProjectServer', @srvproduct='',
@provider='SQLOLEDB', @datasrc='SERVERNAME\PWA_ProjectServer'

根据上面的评论:

select * from [server].[database].[schema].[table]

例如

select top 6 * from [PWA_ProjectServer].[PWA_ProjectServer_Reporting].[dbo].[MSP_AdminStatus]

【讨论】:

    【解决方案4】:

    要进行跨服务器查询,请查看帮助文件中的系统存储过程:sp_addlinkedserver

    连接服务器后,您可以对其运行查询。

    【讨论】:

    • 表在不同的服务器上。
    • 如何链接到服务器以及如何选择数据?请提供步骤。谢谢
    【解决方案5】:

    使用 Microsoft SQL Server Management Studio,您可以创建 Linked Server。首先连接到当前(本地)服务器,然后转到Server Objects > Linked Servers > 上下文菜单 > New Linked Server。在窗口 New Linked Server 中,您必须为远程服务器指定所需的服务器名称、真实服务器名称或 IP 地址(数据源)和凭据(安全页面)。

    您还可以从链接服务器中选择数据:

    select * from [linked_server_name].[database].[schema].[table]
    

    【讨论】:

      【解决方案6】:

      尝试使用 OPENDATASOURCE 语法是这样的:

      select * from OPENDATASOURCE ('SQLNCLI', 'Data Source=192.168.6.69;Initial Catalog=AnotherDatabase;Persist Security Info=True;User ID=sa;Password=AnotherDBPassword;MultipleActiveResultSets=true;' ).HumanResources.Department.MyTable    
      

      【讨论】:

        【解决方案7】:
        Select * from [Database].[dbo].[TableName]
        select * from [dbTest].[dbo].[Products]
        

        【讨论】:

          猜你喜欢
          • 2019-05-22
          • 1970-01-01
          • 2012-12-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-07
          • 1970-01-01
          相关资源
          最近更新 更多