什么是连接到另一个SQL Server的T-SQL语法?

如果我需要将存储过程(SP)从一个SQL Server复制到另一个SQL Server,则右键单击SSMS中的SP,然后select脚本存储过程为> CREATE>新查询编辑器窗口。 然后,通过右键单击该窗口并select连接>更改连接…,然后select新服务器和F5在新服务器上运行创build,从而更改连接。

所以我的问题是“什么是连接到另一个SQL Server的T-SQL语法?” 以便我可以将其粘贴到创build脚本的顶部,然后使用F5来运行它,然后切换到新的服务器并运行创build脚本。

在input问题的时候,我意识到,如果我把你想要做的事情给了你的背后,那么你可能会想出一个更快,更好的方式来完成这个任务。

此外,请确保在编写涉及链接服务器的查询时,可以包含如下所示的括号:

SELECT * FROM [LinkedServer].[RemoteDatabase].[User].[Table] 

我发现至less在2000/2005 []括号是必要的,至less在服务器名称周围。

在SQL Server Management Studio中,从查询菜单打开SQLCMD模式。 然后在脚本的顶部,input下面的命令

 :Connect server_name[\instance_name] [-l timeout] [-U user_name [-P password] 

如果连接到多个服务器,请确保在连接之间插入GO ; 否则你的T-SQL将不会在你想要的服务器上执行。

更新:用于连接到另一个sql服务器并执行sql语句,您必须使用sqlcmd实用程序 。 这通常是在batch file中完成的。 如果你想在management studio中执行它,你可以把它和xmp_cmdshell结合起来。


一种方法是configuration一个链接的服务器 。 那么您可以将链接的服务器和数据库名称追加到表名中。 (select * from linkedserver.database.dbo.TableName)

 USE master GO EXEC sp_addlinkedserver 'SEATTLESales', N'SQL Server' GO 

如果我想解释一下这个问题 – 是否可以在DDL中select查询执行的服务器上下文 – 答案是否定的。 只有数据库上下文可以用USE以编程方式select。 (已经预先select了外部的服务器上下文)

链接服务器和OPEN QUERY可以访问DDL,但是需要重写代码以封装为string,这使得开发/debugging变得困难。

或者,您可以诉诸外部驱动程序来获取SQL文件,通过OPEN QUERY发送​​到远程服务器。 但是在大多数情况下,您可能还是直接连接到服务器以评估DDL。

每当我们试图从另一台服务器上检索任何数据时,我们需要两个步骤。

第一步:

 -- Server one scalar variable DECLARE @SERVER VARCHAR(MAX) --Oracle is the server to which we want to connect EXEC SP_ADDLINKEDSERVER @SERVER='ORACLE' 

第二步:

 --DBO is the owner name to know table owner name execute (SP_HELP TABLENAME) SELECT * INTO DESTINATION_TABLE_NAME FROM ORACLE.SOURCE_DATABASENAME.DBO.SOURCE_TABLE 

尝试创build一个链接的服务器(您可以使用sp_addlinkedserver ),然后使用OPENQUERY

如果您连接到多个服务器,则应在切换服务器之前添加“GO”,否则您的sql语句将针对错误的服务器运行。

例如

 :CONNECT SERVER1 Select * from Table GO enter code here :CONNECT SERVER1 Select * from Table GO 

http://www.sqlmatters.com/Articles/Changing%20the%20SQL%20Server%20connection%20within%20an%20SSMS%20Query%20Windows%20using%20SQLCMD%20Mode.aspx

在我的C盘我首先创build一个txt文件来创build一个新的表。 你可以在这个文本文件中使用你想要的东西

在这种情况下,文本文件被称为“Bedrijf.txt”

内容:

 Print 'START(A) create table' GO 1 If not EXISTS ( SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Bedrijf' ) BEGIN CREATE TABLE [dbo].[Bedrijf] ( [IDBedrijf] [varchar] (38) NOT NULL , [logo] [varbinary] (max) NULL , [VolledigeHandelsnaam] [varchar] (100) NULL ) ON [PRIMARY] 

保存

然后我创build一个名为“Bedrijf.bat”和扩展bat的其他txt文件。 这是内容:

 OSQL.EXE -U Username -P Password -S IPaddress -i C:Bedrijf.txt -o C:Bedrijf.out -d myDatabaseName 

保存并从资源pipe理器双击执行

结果将被保存在名为“Bedrijf.out”的C驱动器上的txt文件中

表明

 1> 2> 3> START(A) create table 

如果一切顺利

而已

如果可能,请查看SSIS(SQL Server集成服务)。 我只是用这个工具箱弄湿了我的脚,但是已经在超过40多台服务器上循环,准备造成各种各样的破坏;)