Tôi đang thực hiện một số quản trị viên DB với cơ sở dữ liệu Azure và tôi cần thực hiện các truy vấn như loại bỏ tất cả các ràng buộc trong cơ sở dữ liệu.SQL Xóa tất cả các ràng buộc Azure thân thiện
sp_MSForEachTable không khả dụng khi làm việc với cơ sở dữ liệu Azure, vì vậy tôi đang làm việc theo một cách khác để thực hiện.
Tôi tìm thấy một đoạn mã mà giọt tất cả các bảng ở đây: http://edspencer.me.uk/2013/02/25/drop-all-tables-in-a-sql-server-database-azure-friendly/ và cố gắng sửa đổi nó để loại bỏ tất cả các hạn chế như tôi cần phải và đã đưa ra kết quả này:
while(exists(select 1 from INFORMATION_SCHEMA.TABLES where TABLE_NAME != '__MigrationHistory'))
begin
PRINT ('Disabling' + TABLE_NAME)
declare @constraintOff nvarchar(2000)
SELECT TOP 1 @constraintOff=('ALTER TABLE ' + TABLE_SCHEMA + '.[' + TABLE_NAME + '] ' + 'NOCHECK CONSTRAINT all')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME != '__MigrationHistory'
exec (@constraintOff)
PRINT @constraintOff
end
Nó liên tục cố gắng để vận hành vào mục đầu tiên trong cơ sở dữ liệu, mà sẽ làm việc tốt nếu bạn đã bỏ tất cả mọi thứ nhưng tôi cần phải lặp qua mỗi bảng và vô hiệu hóa ràng buộc của nó như sp_MSForEachTable nào.
Bất kỳ mẹo nào? Tôi đã nhìn thấy một vài điều ở đây và ở đó yêu cầu bồi thường để làm điều này, nhưng chúng thường là hai hoặc ba trang dài kịch bản mà làm rất nhiều thứ khác và họ làm cho bộ não của tôi bị tổn thương.
CẬP NHẬT
vẫn làm việc trên truy vấn đó, nó có vẻ như một cái gì đó để chấm dứt điều này có thể làm việc tốt hơn nhưng vẫn không có con xúc xắc:
declare @constraintOff nvarchar(2000)
SELECT @constraintOff=('ALTER TABLE ' + TABLE_SCHEMA + '.[' + TABLE_NAME + '] ' + 'NOCHECK CONSTRAINT all')
FROM INFORMATION_SCHEMA.TABLES
exec (@constraintOff)
PRINT @constraintOff
Cái này vẫn chỉ hoạt động trên một bảng, nhưng ít nhất nó không phải là một vòng lặp vô hạn :)
Tôi biết điều này là dành cho Amazon RDS, nhưng có một phần về việc vô hiệu hóa các ràng buộc: http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.html có thể hữu ích. – Nate
đó là chính xác những gì bác sĩ đã ra lệnh, có các đoạn cụ thể để thêm và loại bỏ tất cả các ràng buộc, nếu bạn đặt những liên kết đó vào một bài đăng, tôi sẽ đánh dấu câu trả lời là – Eric