Ketergantungan Anda mungkin akan benar-benar rusak, tetapi saya belum benar-benar menguji ini. Saya tahu itu dalam skenario ini:
CREATE SCHEMA blat AUTHORIZATION dbo;
GO
CREATE TABLE dbo.foo(a INT PRIMARY KEY);
CREATE TABLE dbo.bar(a INT FOREIGN KEY REFERENCES dbo.foo(a));
GO
CREATE PROCEDURE dbo.pX AS
BEGIN
SET NOCOUNT ON;
SELECT a FROM dbo.bar;
END
GO
CREATE VIEW dbo.vFooBar
AS
SELECT foo.a, bar.a AS barA
FROM dbo.foo
INNER JOIN dbo.bar
ON foo.a = bar.a;
GO
ALTER SCHEMA blat TRANSFER dbo.foo;
ALTER SCHEMA blat TRANSFER dbo.bar;
ALTER SCHEMA blat TRANSFER dbo.pX;
ALTER SCHEMA blat TRANSFER dbo.vFooBar;
Kunci asing sebenarnya bermigrasi lebih lancar dari yang saya harapkan (dengan peringatan yang saya uji pada versi yang jauh lebih baru daripada Anda). Tetapi karena kode dalam blat.pX
referensi masih dbo.bar
, jelas menjalankan prosedur:
EXEC blat.pX;
Akan menghasilkan kesalahan ini:
Msg 208, Level 16,
Status 1, Prosedur pX
Nama objek tidak valid 'dbo.bar'.
Dan pertanyaan ketergantungan, seperti:
SELECT * FROM sys.dm_sql_referenced_entities('blat.pX', N'OBJECT');
Akan menghasilkan kesalahan ini:
Msg 2020, Level 16, Negara 1
Ketergantungan yang dilaporkan untuk entitas "blat.pX" mungkin tidak menyertakan referensi ke semua kolom. Ini karena entitas mereferensikan objek yang tidak ada atau karena kesalahan dalam satu atau lebih pernyataan dalam entitas. Sebelum menjalankan kembali kueri, pastikan bahwa tidak ada kesalahan dalam entitas dan bahwa semua objek yang direferensikan oleh entitas ada.
Dan menanyakan tampilan:
SELECT a, barA FROM blat.vFooBar;
Menghasilkan kesalahan ini:
Msg 208, Level 16, Status 1, Prosedur vFooBar
Nama objek tidak valid 'dbo.foo'.
Msg 4413, Level 16, Negara 1
Tidak dapat menggunakan tampilan atau fungsi 'blat.vFoobar' karena kesalahan yang mengikat.
Jadi, ini bisa melibatkan banyak pembersihan. Dan setelah Anda memperbaiki semua referensi objek, Anda mungkin ingin mengkompilasi ulang semua modul dan menyegarkan semua tampilan dalam skema baru. Anda dapat membuat skrip untuk itu sangat mirip dengan contoh di atas.