2010-05-03 105 views

回答

15
exec 

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

这不适合我。未能通过 消息7411,级别16,状态1,行1 服务器'MyLinkedServer'未配置为RPC。 – brewmanz 2016-11-29 02:12:26

+0

老问题,但正如没有人回复的,这里是错误的解决方案:“'MyLinkedServer'未配置为RPC”。 – 2017-01-10 15:27:52

+0

exec解决方案不会将“Create table”语句作为SQL语句发送到链接服务器。它将它作为一个字符串发送,然后在远程服务器上作为一个过程执行。 RPC错误是因为链接的服务器连接程序。默认不允许你执行远程程序。要解决此问题:打开链接服务器上的专有名称。在[服务器选项]页面上,将RPC和RPC输出选项设置为true。我在屏幕截图中添加了一篇文章。 – 2017-01-10 15:34:09

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

这对我来说失败了:Msg 7411,Level 16,State 1,Line 5 Server'MyLinkedServer'未配置为RPC。 – brewmanz 2016-11-29 02:17:14

1

从Arpit解决方案的工作很好。

exec 

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

如何过,当你的错误 “消息7411,级别16,状态1,行1服务器 'MyLinkedServer' 未配置为RPC。”您需要更改链接服务器连接上的RPC参数。由于默认RPC设置为false。它需要设置为true。

Linked server options

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

希望这会有所帮助。

相关问题