首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

變更 SQL Server 資料表擁有者的兩種方法

     編輯:關於SqlServer

方法一:單一資料表變更

EXEC sp_changeobjectowner 'tablename', 'dbo';

方法二:批次變更指定舊擁有者的所有物件

CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch
    @OldOwner NVARCHAR(128),
    @NewOwner NVARCHAR(128)
AS
BEGIN
    DECLARE @Name NVARCHAR(128), @Owner NVARCHAR(128), @OwnerName NVARCHAR(128);
    DECLARE cur CURSOR FOR
        SELECT name, USER_NAME(uid)
        FROM sysobjects
        WHERE USER_NAME(uid) = @OldOwner
        ORDER BY name;

    OPEN cur;
    FETCH NEXT FROM cur INTO @Name, @Owner;
    WHILE @@FETCH_STATUS = 0 BEGIN
        IF @Owner = @OldOwner BEGIN
            SET @OwnerName = @OldOwner + '.' + RTRIM(@Name);
            EXEC sp_changeobjectowner @OwnerName, @NewOwner;
        END
        FETCH NEXT FROM cur INTO @Name, @Owner;
    END
    CLOSE cur;
    DEALLOCATE cur;
END
GO

使用範例

-- 將 old_user 擁有的所有物件改為 dbo
EXEC User_ChangeObjectOwnerBatch 'old_user', 'dbo';

說明

  • sp_changeobjectowner 僅支援資料表、檢視、預存程序等結構描述物件。
  • 批次程序透過 sysobjects 系統表枚舉,適用於大量物件遷移擁有者(如開發環境轉正式環境)。
  • 執行前請備份資料庫,並確認新擁有者帳號存在。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved