由于列 "Id",链接服务器无法插入 table。用户没有写入列的权限
for linked server could not INSERT INTO table because of column "Id". The user did not have permission to write to the column
我正在尝试使用以下查询将缺失的行从一台 MS sql 服务器复制到另一台。
我知道连接有效,因为插入连接的 select 工作正常。
insert into [192.168.0.200].webanalyzer.dbo.sale
select * from WebAnalyzer.dbo.Sale where url COLLATE DATABASE_DEFAULT not in
(
select url COLLATE DATABASE_DEFAULT From [192.168.0.200].webanalyzer.dbo.sale
)
但是我收到以下错误
Msg 7344, Level 16, State 1, Line 1 The OLE DB provider "MSOLEDBSQL"
for linked server "192.168.0.200" could not INSERT INTO table
"[192.168.0.200].[webanalyzer].[dbo].[sale]" because of column "Id".
The user did not have permission to write to the column.
如何授予远程服务器权限?
确实与@AndreiXwe 许可在评论中建议的无关。
它是自动递增的 Id,更改 sql 语句以明确列出列使其工作。
insert into [192.168.0.200].webanalyzer.dbo.sale ([Url]
,[Title]
,[Subtitle]
,[Address]
,[Price]
,[LivingArea]
,[RoomCount]
,[PostCode]
,[TotalArea]
,[DateAdded]
,[DateRemoved]
,[DateLastProcessed]
,[ServiceCosts]
,[HeatingType]
,[IsBendrabutis])
select [Url]
,[Title]
,[Subtitle]
,[Address]
,[Price]
,[LivingArea]
,[RoomCount]
,[PostCode]
,[TotalArea]
,[DateAdded]
,[DateRemoved]
,[DateLastProcessed]
,[ServiceCosts]
,[HeatingType]
,[IsBendrabutis] from WebAnalyzer.dbo.Sale where url COLLATE DATABASE_DEFAULT not in
(
select url COLLATE DATABASE_DEFAULT From [192.168.0.200].webanalyzer.dbo.sale
)
如果 Id
列有自动生成的值,则不能使用显式插入。因此,将您的查询更改为:
insert into [192.168.0.200].webanalyzer.dbo.sale ([columns])
select [columns] from WebAnalyzer.dbo.Sale where url COLLATE DATABASE_DEFAULT not in
(
select url COLLATE DATABASE_DEFAULT From [192.168.0.200].webanalyzer.dbo.sale
)
其中 [columns]
是您需要插入的列
我正在尝试使用以下查询将缺失的行从一台 MS sql 服务器复制到另一台。 我知道连接有效,因为插入连接的 select 工作正常。
insert into [192.168.0.200].webanalyzer.dbo.sale
select * from WebAnalyzer.dbo.Sale where url COLLATE DATABASE_DEFAULT not in
(
select url COLLATE DATABASE_DEFAULT From [192.168.0.200].webanalyzer.dbo.sale
)
但是我收到以下错误
Msg 7344, Level 16, State 1, Line 1 The OLE DB provider "MSOLEDBSQL" for linked server "192.168.0.200" could not INSERT INTO table "[192.168.0.200].[webanalyzer].[dbo].[sale]" because of column "Id". The user did not have permission to write to the column.
如何授予远程服务器权限?
确实与@AndreiXwe 许可在评论中建议的无关。 它是自动递增的 Id,更改 sql 语句以明确列出列使其工作。
insert into [192.168.0.200].webanalyzer.dbo.sale ([Url]
,[Title]
,[Subtitle]
,[Address]
,[Price]
,[LivingArea]
,[RoomCount]
,[PostCode]
,[TotalArea]
,[DateAdded]
,[DateRemoved]
,[DateLastProcessed]
,[ServiceCosts]
,[HeatingType]
,[IsBendrabutis])
select [Url]
,[Title]
,[Subtitle]
,[Address]
,[Price]
,[LivingArea]
,[RoomCount]
,[PostCode]
,[TotalArea]
,[DateAdded]
,[DateRemoved]
,[DateLastProcessed]
,[ServiceCosts]
,[HeatingType]
,[IsBendrabutis] from WebAnalyzer.dbo.Sale where url COLLATE DATABASE_DEFAULT not in
(
select url COLLATE DATABASE_DEFAULT From [192.168.0.200].webanalyzer.dbo.sale
)
如果 Id
列有自动生成的值,则不能使用显式插入。因此,将您的查询更改为:
insert into [192.168.0.200].webanalyzer.dbo.sale ([columns])
select [columns] from WebAnalyzer.dbo.Sale where url COLLATE DATABASE_DEFAULT not in
(
select url COLLATE DATABASE_DEFAULT From [192.168.0.200].webanalyzer.dbo.sale
)
其中 [columns]
是您需要插入的列