我有一对链接的SQL服务器:服务器A和ServerB。 我想写一个简单的INSERT INTO SELECT语句将从服务器A的数据库中的行复制到服务器B的数据库。 ServerB的数据库是直接从服务器A的复制,所以他们应该有相同的基本结构(相同的列名等)
问题是,当我尝试执行以下语句:
INSERT INTO [ServerB].[data_collection].[dbo].[table1] SELECT * FROM [ServerA].[data_collection].[dbo].[table1]
我得到以下错误:
Msg 16902, Level 16, State 48, Line 1 sp_cursor: The value of the parameter 'value' is invalid.
在另一方面,如果我尝试执行以下语句:
INSERT INTO [ServerB].[data_collection].[dbo].[table1] (Time) SELECT Time FROM [ServerA].[data_collection].[dbo].[table1]
声明工作得很好,并且按预期执行的代码。 上面的语句执行就好了,不管是哪个或多少表我指定要插入的。
所以在这里我的问题是,为什么会我的INSERT INTO SELECT语句正常工作时,我明确指定的列复制,但不是当我告诉它使用复制一切“*”? 然后我的第二个问题是:我该如何解决这一问题?