国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

Mssql批量修改權限

2024-07-21 02:31:59
字體:
來源:轉載
供稿:網友

    今天恢復一個在別人機器備份的數據庫到SQL SERVER,恢復后該數據庫中有一個mooip用戶,該用戶是數據庫所有者,很多表的所有者也是他,但安全性里的登錄中沒有該用戶,刪除不了該用戶,提示“因為選定的用戶擁有對象,所以無法除去該用戶”!
具體解決方式如下:
      1 如果是一張表有此問題,解決方式如下:
      
       exec sp_changeobjectowner 'mooip.tablename', 'dbo'
    
       這樣就把tablename指定的表的所有者賦值給了dbo用戶

     2 如果所有表都存在此問題,這是就要編寫存儲過程實現批量修改了
      
         IF OBJECT_ID('ChangeAll') IS NOT NULL Drop PROC ChangeAll
         GO

         Create PROCEDURE ChangeAll (
             @old sysname,
             @new sysname
         )
        AS
             DECLARE @objname sysname

             SET NOCOUNT ON

             IF USER_ID(@old) IS NULL
                BEGIN
                    RAISERROR ('The @old passed does not exist in the database', 16, 1)
                    RETURN
                END
             IF USER_ID(@new) IS NULL
                BEGIN
                    RAISERROR ('The @new passed does not exist in the database', 16, 1)
                    RETURN
                END

             DECLARE owner_cursor CURSOR FOR

             Select name FROM sysobjects Where uid = USER_ID(@old)
             OPEN owner_cursor
             FETCH NEXT FROM owner_cursor INTO @objname
             WHILE (@@fetch_status <> -1)
                 BEGIN
                     SET @objname = @old + '.' + @objname
                     EXEC sp_changeobjectowner @objname, @new
                     FETCH NEXT FROM owner_cursor INTO @objname
                 END

            CLOSE owner_cursor
            DEALLOCATE owner_cursorz
            GO

EXEC ChangeAll @old = 'mooip', @new = 'dbo'

這樣就完成了批量修改權限的工作


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 九龙坡区| 宁武县| 奉化市| 南京市| 石台县| 阿巴嘎旗| 曲麻莱县| 廊坊市| 泸定县| 黄骅市| 永昌县| 无棣县| 新平| 望都县| 鹤庆县| 高唐县| 楚雄市| 甘泉县| 婺源县| 临夏县| 崇仁县| 汝阳县| 连城县| 南雄市| 天水市| 柘荣县| 肇源县| 华容县| 蓬安县| 宾阳县| 会同县| 新建县| 文成县| 临沧市| 荣昌县| 陇西县| 体育| 昌黎县| 五常市| 宜春市| 都匀市|