Chỉ cần thêm rằng bạn không phải bỏ và tạo lại bản sao chỉ để thay đổi bit "không cho sao chép".
Bạn có thể làm điều đó bằng T-SQL mà không tạo ảnh chụp nhanh hoặc phá vỡ bản sao của bạn -
sys.sp_identitycolumnforreplication
1 = không cho nhân rộng
0 = để nhân rộng và điều này gây ra sự cố với các dấu hiệu nhận dạng ở phía thuê bao
Để thay đổi nó cho tất cả các bảng:
EXEC sp_msforeachtable @command1 = '
declare @int int
set @int =object_id("?")
EXEC sys.sp_identitycolumnforreplication @int, 1'
Để thay đổi nó chỉ cho 1 bảng, trước tiên hãy tìm hiểu object_id của bảng và sau đó chạy bên dưới
EXEC sys.sp_identitycolumnforreplication table_object_id, 1
BIÊN TẬP
Dưới đây tsql sẽ cung cấp cho bạn một đầu ra đẹp với lệnh có thể được xem xét trước khi chạy cho toàn bộ cơ sở dữ liệu:
if exists (select 1 from sys.identity_columns where is_not_for_replication = 0)
begin
SELECT QUOTENAME(SCHEMA_NAME(t.schema_id)) as SchemaName,
QUOTENAME(t.name) AS TableName,
c.name AS ColumnName,
c.object_id as ObjectID,
c.is_not_for_replication,
'EXEC sys.sp_identitycolumnforreplication '+cast(c.object_id as varchar(20)) + ', 1 ;' as CommandTORun_SetIdendityNOTForReplication
FROM sys.identity_columns AS c
INNER JOIN sys.tables AS t ON t.[object_id] = c.[object_id]
WHERE c.is_identity = 1
and c.is_not_for_replication = 0
end
else
print 'There are no identity columns that needs NOT FOR REPLICATION set to 1'
Đối với cơ sở dữ liệu mạo hiểm: