私は異なるサーバ上に複数のDBを持っており、テーブルからいくつかの情報を取っています(たとえば、このテーブルはすべてのDBにあります)。私はSQLCMDモードを使用するが、私はしません異なるサーバから複数のDBに接続する
(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.
サーバー間の切り替えのために:だから私は、カーソルの上のすべてのサーバーとDBのを追加してから、私はこのスクリプトを実行します。
BEGIN
fetch next from CursorData into @DBName,@DBServer
set @cmd=':Connect ' + @DBServer+ CHAR(10) + CHAR(13)+ 'use ['[email protected]+'] select * from [UserAccount] where userid='''[email protected]+'''' + CHAR(10) + CHAR(13)+ 'GO'
print @cmd
exec sp_executeSQL @cmd
END
と私はエラーに従ってきました私はそれを文字列にして文字列を実行するときに動作するかどうかを知る。
あれば、私はSQLCMDモードの作業で、このコマンドを実行します。
:Connect DBServer
use [DBName] select * from [UserAccount] where userid='myuserid'
GO
誰もが私が逃したものを知っているか、このための別の解決策を知っている場合。
リンクサーバー以外の解決策を見つける必要があります。 DBAはこれを解決するためにスクリプトなどを書こうとします。 –
@ SilviSSリンクされたサーバーで何が問題になっていますか? SQLCMDで変数を使用する方法について調べましたか?http://dba.stackexchange.com/questions/111339/user-shared-queries-dynamic-sql-vs-sqlcmd? – iamdave
私にとっては、この解決策に間違いはありません。私はリンクされたサーバーオブジェクトを作成できない役割を持っています(私は許されません)。これが別の解決策を見つけようとしている理由です。 –