连接到不同服务器的多个DB

时间:2016-10-17 11:35:23

标签: sql-server tsql ssms sqlcmd

我在不同的服务器上有多个数据库,我想从表中获取一些信息(例如用户 - 这个表在所有数据库上)。所以我在游标上添加所有服务器和数据库,然后运行这个脚本:

BEGIN

fetch next from CursorData into @DBName,@DBServer

set @cmd=':Connect ' + @DBServer+ CHAR(10) + CHAR(13)+ 'use ['+@DBName+'] select * from [UserAccount] where userid='''+@UserID+'''' + CHAR(10) + CHAR(13)+  'GO'

  print @cmd

exec sp_executeSQL @cmd

END

我跟踪错误:

(1 row(s) affected)

:Connect DBServer
use [DBName] select * from [UserAccount] where userid='myuserid'
GO

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ':'.

Msg 911, Level 16, State 1, Line 2
Database 'DBName' does not exist. Make sure that the name is entered correctly.

为了在服务器之间切换,我使用了sqlcmd模式,但是当我把它放入字符串然后执行字符串时我不知道是否有效。

如果,我在sqlcmd模式下执行此命令:

:Connect DBServer
use [DBName] select * from [UserAccount] where userid='myuserid'
GO

如果有人知道我错过了什么或知道另一个解决方案。

1 个答案:

答案 0 :(得分:0)

为所有不同的服务器创建Linked Server objects,将所有相关数据提取到工作服务器上,然后从那里查询数据。

根据上面的链接,您可以通过在对象资源管理器中展开Server Objects,右键单击Linked Servers,然后填写相应的连接信息,在SSMS中执行此操作。

如果它们都是基于SQL Server的,您可以使用[Server].[Database].[Schema].[Table]表示法查询它们,如果不是,则需要使用OPENQUERY