是否可以在链接服务器上创建表?

时间:2010-05-03 09:00:58

标签: sql-server sql-server-2005

是否可以在链接服务器上创建表?

3 个答案:

答案 0 :(得分:18)

exec

('CREATE TABLE DatabaseName.dbo.TableName
(
  column1 datatype,
  column2 datatype,
  column3 datatype
)') at [LinkedServer]

答案 1 :(得分:3)

Arpit的解决方案运行良好。

exec

('CREATE TABLE DatabaseName.dbo.TableName
(
  column1 datatype,
  column2 datatype,
  column3 datatype
)') at [LinkedServer];
go

然而,当您收到错误“Msg 7411,级别16,状态1,第1行服务器'MyLinkedServer'未配置为RPC时。”您需要更改链接服务器连接上的RPC参数。默认情况下,RPC设置为false。它需要设置为true。

Linked server options

这允许您在链接服务器上运行过程。 您必须允许此操作,因为解决方案不会将“Create table”语句作为SQL命令发送到链接服务器。它将语句作为字符串发送,而该字符串又作为远程服务器上的过程执行。

希望这有帮助。

答案 2 :(得分:1)

如果您使用的是SQL Server Management Studio和SQLCMD模式:

-- To enable "SQLCMD mode" in SQL Server Management Studio (SSMS):
-- In the menu toolbar: Query > SQLCMD mode

:setvar LinkedServer "YourLinkedServerNameHere"
:setvar DestinationDb "YourDestinationDatabaseNameHere"
GO

EXEC ('
CREATE TABLE $(DestinationDb).dbo.YourTableNameHere (
    [Field1] INT NOT NULL,
    [Field2] INT NOT NULL
)
') AT $(LinkedServer)
GO

EXEC ('DROP TABLE $(DestinationDb).dbo.YourTableNameHere') AT $(LinkedServer)
GO