如果我需要将存储过程(SP)从一个SQL Server复制到另一个SQL Server,我右键单击SSMS中的SP并选择Script Stored Procedure as> CREATE to> New Query Editor Window.然后我通过右键单击该窗口并选择Connection> Change Connection ...然后选择新服务器和F5以在新服务器上运行create来更改连接.
所以我的问题是"连接到另一个SQL Server的T-SQL语法是什么?" 这样我就可以将它粘贴到创建脚本的顶部,然后运行F5来运行它,它将切换到新服务器并运行创建脚本.
在输入问题的同时,我意识到,如果我给你的背景是我正在尝试做的事情,那么你可能会想出一个更快更好的方法来实现这个目标.
在SQL Server Management Studio中,从"查询"菜单中启用SQLCMD模式.然后在脚本的顶部,输入以下命令
:Connect server_name[\instance_name] [-l timeout] [-U user_name [-P password]
如果要连接到多个服务器,请确保GO
在连接之间插入; 否则你的T-SQL将无法在你认为的服务器上执行.
此外,请确保在编写涉及链接服务器的查询时,包括如下括号:
SELECT * FROM [LinkedServer].[RemoteDatabase].[User].[Table]
我发现至少在2000/2005,[]括号是必要的,至少在服务器名称周围.
更新:要连接到另一个sql server并执行sql语句,必须使用sqlcmd Utility.这通常在批处理文件中完成.如果要在管理工作室中执行它,可以将其与xmp_cmdshell结合使用.
一种方法是配置链接服务器.然后,您可以将链接服务器和数据库名称附加到表名称.(select*from linkedserver.database.dbo.TableName)
USE master GO EXEC sp_addlinkedserver 'SEATTLESales', N'SQL Server' GO
如果我要解释这个问题 - 是否可以在DDL中选择服务器上下文来执行查询 - 答案是否定的.只能使用USE以编程方式选择数据库上下文.(已经在外部预先选择了服务器上下文)
链接服务器和OPEN QUERY可以提供对DDL的访问,但需要对代码进行重写以封装为字符串 - 这使得开发/调试变得困难.
或者,您可以使用外部驱动程序来拾取SQL文件以通过OPEN QUERY发送到远程服务器.但是,在大多数情况下,您可能直接在第一个位置连接到服务器以评估DDL.