sys.objects)SELECT name FROM sys.tables ORDER BY name; -- 或舊版 sysobjects WHERE type = 'U'
SELECT c.name, t.name AS type_name, c.max_length, c.precision, c.scale, c.is_nullable
FROM sys.columns c
JOIN sys.types t ON c.user_type_id = t.user_type_id
WHERE c.object_id = OBJECT_ID('dbo.YourTable');
情境:資料庫 testDB 現有 Schema A / User A,需全數移至 B 並刪除 A。
CREATE USER B FOR LOGIN B; CREATE SCHEMA B AUTHORIZATION B;-- 單一物件
ALTER SCHEMA [B] TRANSFER A.[TableName];
ALTER SCHEMA [B] TRANSFER A.[ViewName];
ALTER SCHEMA [B] TRANSFER A.[ProcName];
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += N'ALTER SCHEMA [B] TRANSFER A.' + QUOTENAME(name) + N';' + CHAR(13)
FROM sys.objects
WHERE schema_id = SCHEMA_ID('A')
AND type IN ('U','V','P','FN','IF','TF'); -- 表、檢視、預存程序、函數
PRINT @sql; -- 確認後再 EXEC sp_executesql @sql;
-- 確認無殘留物件
SELECT * FROM sys.objects WHERE schema_id = SCHEMA_ID('A');
-- 刪除 Schema
DROP SCHEMA [A];
danxiao1.ds_city1 移至 dboALTER SCHEMA [dbo] TRANSFER danxiao1.ds_city1;
TRANSFER 不會改變物件權限,若有獨立授權需同步調整。type = 'S') 不可移動。ALTER SCHEMA TRANSFER,需用 sp_changeobjectowner (已淘汰)。