如果我需要复制一个存储程序(SP)从一个SQL服务器到另一个我右击SP在短程和选择脚本存储的过程>创建新的编辑查询窗口。然后我改变连接,通过正确的点击窗口和选择连接>的变化连接...然后选择的新的服务器和F5运行创建新的服务器。

所以我的问题是"什么是T-SQL法连接到另一个SQL服务器上?"所以我可以贴,在创造的剧本和F5运行,它将切换到新的服务器和运行创造脚本。

同时输入问题,我意识到,如果我给你回地面对什么我想要做的,你可能会想出了一个更快和更好的办法了我要完成这一任务。

有帮助吗?

解决方案

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

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

我发现至少在2000/2005年,[]括号是必要的,至少在服务器名称附近。

其他提示

在SQL Server Management Studio中,从“查询”菜单中启用SQLCMD模式。 然后在脚本的顶部,输入以下命令

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

如果要连接多台服务器,请务必在连接之间插入 GO ; 否则你的T-SQL将无法在你认为的服务器上执行。

更新:要连接到另一个sql server并执行sql语句,你必须使用 sqlcmd实用程序。这通常在批处理文件中完成。 如果您愿意,可以将其与 xmp_cmdshell 结合使用在管理工作室内执行。


一种方法是配置链接服务器。然后,您可以将链接服务器和数据库名称附加到表名称。 (从linkedserver.database.dbo.TableName中选择*)

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

如果我要解释的问题-这可能选择服务器上查询执行在言-答案是没有。仅数据库方面可编程方式选择与使用。(具有已预先选定的服务器上下文外)

链接的服务器和开放的查询可以得到访问言,但需要稍微重写代码封作为a string-使它难以制定/调试。

或者你可以诉诸外部驱动程序取SQL文件发送到远程服务器通过公开查询。然而在大多数情况下可能以及具有连接服务器直接在第1次地方评估言.

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

第一步:

-- 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

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

e.g。

: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

尝试创建链接服务器(可以使用 sp_addlinkedserver )然后使用 OPENQUERY

在我的C盘上

我首先创建一个txt文件来创建一个新表。您可以在此文本文件中使用您想要的内容

在这种情况下,文本文件被称为“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]

保存

然后我创建了一个名为“Bedrijf.bat”的其他txt文件。和扩展球棒。 它的内容是:

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

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

结果将保存在C盘上的txt文件中,名称为“Bedrijf.out”

显示

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

如果一切顺利

就是这样

如果可能,请查看SSIS(SQL Server Integration Services)。我刚刚用这个工具包弄湿了,但已经在40多台服务器上循环并准备发生各种各样的破坏;)

尝试PowerShell类型:

$cn = new-object system.data.SqlClient.SQLConnection("Data Source=server1;Initial Catalog=db1;User ID=user1;Password=password1");
$cmd = new-object system.data.sqlclient.sqlcommand("exec Proc1", $cn);
$cn.Open();
$cmd.CommandTimeout = 0
$cmd.ExecuteNonQuery()
$cn.Close();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top