456成人影院在线观看_亚洲a毛片_日韩9999_伊人网老司机_一本免费视频_最近高清日本免费

IT之道-艾銻知道

您當前位置: 主頁 > 資訊動態 > IT知識庫 >

艾銻知識 | SQL Server正確刪除Windows認證用戶的方法


2020-03-04 16:31 作者:艾銻無限 瀏覽量:


煩惱即菩提,菩提即智慧

 
 
 
 
 
疫情放慢了管理者的腳步,卻沒有放慢管理者的心,對于企業來說,在富有的時候,可以說說情懷,說說理想,但在貧窮受困的時候,沒有飯吃的時候,情懷和理想其實并不重要,重要的是下一頓吃什么?在哪吃呢?
 
前幾天,有篇文章報道某云南大型企業的人事總監被總經理怒罵的郵件很火,為什么會發生這樣的事,我覺得身為一個企業的員工,無論你處在什么崗位,什么職位,一定要審時度勢,要知道企業要什么,俗話說,大河有水小河滿,只有企業活下來了,活好了,組織里的員工才能真正拿到自己想要的,如果在危難時機,你還在堅持自己觀點,抱持著自己的思維不改變,不能與企業思想同步,那最終也不會有什么好的結果.
 
在這里艾銻無限給已經上班或即將上班的各個企業伙伴一些忠告:
 
1,困難時期,在為自己著想的同時多想想能為企業做點什么,今天你的付出,明天不一定會有收獲,但長久來看,能量守恒定律,你是不會吃虧的.
 
2,在經濟還沒復蘇的時期,企業還不太忙的時候,除了做好自己部門手頭上的工作以外,把自己的大腦開動起來,如果你是職員,就想想假如你是這個部門經理,你如何做可以讓部門的損失降到最低,讓收益提升到最大.如果你是經理就想想假如你是企業的CEO,你如何做可以讓企業快速恢復狀態,讓業務快速發展起來,讓現金流可以流動起來?
 
3,如果你處在花錢的部門,就想想如何做可以省錢,又可以為部門創收,如果你是創收的部門,就想想原來從來就沒想過的問題,因為你不能破舊就不能立新,不能創造就是在消耗.
 
4,管理團隊間,如果不是能力問題,不僅行動要勤快,大腦更要勤快一些,除了思考自己部門的工作,也要思考其他部門的工作,你的團隊可以做些什么更利于其他部門的發展,你可以做些什么更助于其他管理者達成目標,整個企業就像一臺齒輪吻合的機器,只有彼此主動吻合才能讓這臺機器更好的運轉,這也像打群架,如果每一個人都能照顧好自己,還能為他人著想,就不會受傷,也能全身而退,有一個人需要他人照顧,就很可能有人受傷,并導致全隊受損.
 
5,無論什么時期,不要害怕困難,不要拒絕煩惱, 煩惱即菩提,菩提即智慧,偉大的洞見和上師都是來自于苦難和無數次的折磨.相信宇宙的安排,無論是事,還是人,來到你的身邊就是成就你的,所以把心安于當下,盡一切努力做到盡善盡美.
 
接下來分享一則技術信息,以許會對你的企業有所幫助:

艾銻知識 |SQL Server正確刪除Windows認證用戶的方法

前言

在SQL Server數據庫中,有時候會建立一些Windows認證的賬號(域賬號),例如,我們公司習慣給開發人員和Support同事開通NT賬號權限,如果有離職或負責事宜變更的話,那么要如何正確的刪除這些Windows認證賬號呢?這篇文章就是來探討一下如何正確的刪除Windows認證賬號。如下所示:
下面這種方式,僅僅是刪除登錄名(login),然而并沒有刪除用戶(User)

1
2
3
4
5
USE [master]
GO
 
DROP LOGIN [xxx\xxxx]
GO

你刪除登錄名的時候,就會遇到類似下面的告警信息:

Deleting server logins does not delete the database users associated with the logins. To complete the process, delete the users in each database. It may be necessary to first transfer the ownership of schemas to new users.
也就是說,雖然你刪除了登錄名,但是對應用戶數據庫或系統數據庫相關的User權限并沒有清理,在SQL Server中登錄名(Server Login)跟數據庫的用戶(database User)是分離開來,但是又有關聯的。所以正確的姿勢: 在刪除登錄名(login)后,還必須去每個數據庫,刪除對應的用戶(user). 在刪除登錄名前必須檢查,有那些作業的OWNER或數據庫的OWNER的為該Windows認證賬號(NT賬號),否則后面就會遇到一些問題:

1:如果刪除Windows認證用戶前,沒有修改作業的OWNER(如果此作業的OWNER為此Windows用戶的話,那么刪除Windows認證用戶后,作業就會報類似下面這種錯誤。

The job failed. The owner (xx\xxx) of job syspolicy_purge_history does not have server access.

所以在刪除Windows認證用戶前,必須檢查并修改作業的Owner,避免這種情況出現。

2:刪除Windows認證用戶前,確認是否有數據庫的OWNER為此Windows認證用戶。否則刪除登錄名時會報錯

Msg 15174, Level 16, State 1, Line 4

Login 'xxx\xxxx' owns one or more database(s). Change the owner of the database(s) before dropping the login.

Msg 15174, Level 16, State 1, Line 4

登錄名 'xxx\xxx' 擁有一個或多個數據庫。在刪除該登錄名之前,請更改相應數據庫的所有者。

必須修改數據庫的Owner后(一般將數據庫的owner改為sa),才能刪除登錄名

sp_changedbowner 'sa'

3:有時候刪除用戶時,報下面錯誤,必須修改后,才能刪除對應的用戶。

遇到下面錯誤:

Msg 15138, Level 16, State 1, Line 3

數據庫主體在該數據庫中擁有 架構,無法刪除。

Msg 15138, Level 16, State 1, Line 3

The database principal owns a schema in the database, and cannot be dropped.

 

 
USE YourSQLDba;
GO
ALTER AUTHORIZATION ON SCHEMA::[db_owner] TO [dbo];
USE [YourSQLDba]
GO
DROP USER [xxx\konglb];
GO
當然要根據實際情況來處理
USE [UserDatabase];
GO
ALTER AUTHORIZATION ON SCHEMA::[xxx] TO [dbo];
另外一種是用戶創建的Schema,這個根上面情況沒有差別。
所以正確的刪除登錄名,可以用腳本生成對應的SQL(當然也可以執行對應的SQL,但是這種高位操作,建議生成腳本,人工判斷后,手工執行)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
DECLARE @login_name sysname;
SET @login_name='GFG1\chenzhenh'
 
SELECT d.name AS database_name,
owner_sid AS owner_sid ,
l.name AS database_owner
FROM sys.databases d
LEFT JOIN sys.syslogins l ON l.sid = d.owner_sid
WHERE l.name=@login_name;
 
 
 
SELECT 'USE ' + d.name + CHAR(10)
+ 'GO' + CHAR(10)
+ 'EXEC dbo.sp_changedbowner @loginame =N''sa'', @map = false' AS change_db_owner_cmd
FROM sys.databases d
LEFT JOIN sys.syslogins l ON l.sid = d.owner_sid
WHERE l.name = @login_name;
 
 
SELECT j.job_id AS JOB_ID
,j.name AS JOB_NAME
,CASE WHEN [enabled] =1 THEN 'Enabled'
ELSE 'Disabled' END AS JOB_ENABLED
,l.name AS JOB_OWNER
,j.category_id AS JOB_CATEGORY_ID
,c.name AS JOB_CATEGORY_NAME
,[description] AS JOB_DESCRIPTION
,date_created AS DATE_CREATED
,date_modified AS DATE_MODIFIED
FROM msdb.dbo.sysjobs j
INNER JOIN msdb.dbo.syscategories c ON j.category_id = c.category_id
INNER JOIN sys.syslogins l ON l.sid = j.owner_sid
WHERE l.name= @login_name
ORDER BY j.name
 
 
 
DECLARE @job_owner NVARCHAR(32);
 
SET @job_owner='sa';
 
SELECT 'EXEC msdb.dbo.sp_update_job @job_name=N''' +j.name + ''', @owner_login_name=N''' + RTRIM(LTRIM(@job_owner)) + ''';' AS change_job_owner_cmd
FROM msdb.dbo.sysjobs j
INNER JOIN msdb.dbo.syscategories c ON j.category_id = c.category_id
INNER JOIN sys.syslogins l ON l.sid = j.owner_sid
WHERE l.name = @login_name
ORDER BY j.name
 
 
SELECT '
USE [master]
GO
DROP LOGIN ' + QUOTENAME(@login_name) +
'
GO
' AS drop_login_user;


然后刪除用戶(User),此腳本也可以清理那些登錄名已經刪除,但是對應的USER沒有清理的Windows 認證用戶。此腳本可能有一些邏輯上的Bug,個人也是fix掉了一些Bug后,才發布這篇博客。如果遇到什么Bug,可以留言反饋。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
DECLARE @database_id INT;
DECLARE @database_name sysname;
DECLARE @cmdText NVARCHAR(MAX);
DECLARE @prc_text NVARCHAR(MAX);
DECLARE @RowIndex INT;
DECLARE @user_name NVARCHAR(128);
 
 
IF OBJECT_ID('TempDB.dbo.#databases') IS NOT NULL
DROP TABLE dbo.#databases;
 
CREATE TABLE #databases
(
database_id INT,
database_name sysname
)
 
 
INSERT INTO #databases
SELECT database_id ,
name
FROM sys.databases
WHERE name NOT IN ( 'master', 'tempdb', 'model', 'msdb',
'distribution', 'ReportServer',
'ReportServerTempDB', 'YourSQLDba' )
AND state = 0; --state_desc=ONLINE
 
 
CREATE TABLE #removed_user
(
username sysname
)
 
--開始循環每一個用戶數據庫(排除了上面相關數據庫)
WHILE 1= 1
BEGIN
 
 
SELECT TOP 1 @database_name= database_name
FROM #databases
ORDER BY database_id;
 
IF @@ROWCOUNT =0
BREAK;
 
 
SET @cmdText = 'USE ' + @database_name + ';' +CHAR(10)
 
SELECT @cmdText += 'INSERT INTO #removed_user
SELECT name FROM sys.sysusers
WHERE sid NOT IN (SELECT sid FROM sys.syslogins WHERE isntname=1 AND name LIKE ''GFG1%'')
AND isntname=1 AND name NOT IN (''NT AUTHORITY\SYSTEM'')' + CHAR(10);
 
EXEC SP_EXECUTESQL @cmdText
 
SELECT @database_name AS database_name;
 
SELECT j.job_id AS JOB_ID
,j.name AS JOB_NAME
,CASE WHEN [enabled] =1 THEN 'Enabled'
ELSE 'Disabled' END AS JOB_ENABLED
,l.name AS JOB_OWNER
,j.category_id AS JOB_CATEGORY_ID
,c.name AS JOB_CATEGORY_NAME
,[description] AS JOB_DESCRIPTION
,date_created AS DATE_CREATED
,date_modified AS DATE_MODIFIED
FROM msdb.dbo.sysjobs j
INNER JOIN msdb.dbo.syscategories c ON j.category_id = c.category_id
INNER JOIN sys.syslogins l ON l.sid = j.owner_sid
INNER JOIN #removed_user r ON l.name = r.username
ORDER BY j.name;
 
 
SELECT d.name AS database_name ,
l.name AS database_owner ,
d.create_date AS create_date ,
d.collation_name AS collcation_name ,
d.state_desc AS state_desc
FROM sys.databases d
INNER JOIN sys.syslogins l ON d.owner_sid = l.sid
INNER JOIN #removed_user r ON r.username = l.name
 
 
SET @cmdText = 'USE ' + @database_name + ';' +CHAR(10)
 
SET @cmdText += 'SELECT * FROM sys.schemas s
INNER JOIN #removed_user r ON s.name =r.username Collate Database_Default' + CHAR(10);
 
EXEC SP_EXECUTESQL @cmdText;
 
 
SET @cmdText = 'USE ' + @database_name + ';' +CHAR(10)
 
SET @cmdText += 'SELECT * FROM sys.objects WHERE schema_id IN (SELECT s.schema_id FROM sys.schemas s INNER JOIN #removed_user r ON s.name =r.username Collate Database_Default);'
 
EXEC SP_EXECUTESQL @cmdText;
 
SET @cmdText = 'USE ' + @database_name + ';' +CHAR(10)
SET @cmdText += 'SELECT ''USE ' + @database_name + ';'' + CHAR(10) +''GO'' + CHAR(10) +''ALTER AUTHORIZATION ON SCHEMA::'' +QUOTENAME(s.name) +'' TO [dbo];'' AS change_schema_cmd FROM sys.schemas s
INNER JOIN #removed_user r ON s.name =r.username Collate Database_Default ' + CHAR(10);
 
EXEC SP_EXECUTESQL @cmdText, N'@database_name sysname',@database_name ;
 
SET @cmdText = 'USE ' + @database_name + ';' +CHAR(10)
SET @cmdText += 'SELECT ''USE ' + @database_name + ';'' + CHAR(10) +''GO'' + CHAR(10) +''ALTER AUTHORIZATION ON SCHEMA::'' +QUOTENAME(s.SCHEMA_NAME) +'' TO [dbo];'' AS change_schema_cmd
FROM INFORMATION_SCHEMA.SCHEMATA s
INNER JOIN #removed_user r ON s.SCHEMA_OWNER =r.username Collate Database_Default' + CHAR(10);
 
EXEC SP_EXECUTESQL @cmdText, N'@database_name sysname',@database_name ;
 
SELECT 'USE ' + QUOTENAME(@database_name) + CHAR(10)
+ 'GO ' + CHAR(10)
+ 'DROP USER ' + QUOTENAME(username) +';' + CHAR(10)
+ 'GO' AS drop_user_cmd
FROM #removed_user;
 
 
TRUNCATE TABLE #removed_user;
 
 
DELETE FROM #databases WHERE database_name=@database_name;
 
END
 
DROP TABLE #databases;
DROP TABLE #removed_user;

總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值

相關文章

IT外包服務
二維碼 關閉
主站蜘蛛池模板: 午夜欧美一区二区三区免费观看_欧美日韩国产精品激情在线播放_亚洲美女一二三区_综合97_av人摸人人人澡人人超碰_93超碰国产大屁股_www午夜精品视频一区二区_日本tubesex人妻 | 人人爽人人澡人人人妻_亚洲夜色av_日韩最新免费无码视频_久久精品日韩按摩中文字幕_亚洲午夜福利717_国产成人亚洲日韩欧美久久久_15GAY男同志同性1069_www.色网 | 欧美伊人精品成人久久综合97_波多野结衣一区二区_亚洲国产精品无码专区在线观看_日韩国产免费一区二区三区_日本三级91_成人偷拍片视频在线观看_欧美另类一区_国产精品一二三区免费 | 亚洲乱亚洲乱妇无码_午夜dj高清www免费视频_久久久久国产A免费观看RELA_国产在线一二区_特黄免费av_AV不卡在线永久免费观看_日本熟妇洗澡videos_与子乱对白在线播放单亲国产 | 亚洲国产一区二区在线观看_欧美日韩在线第一页_美国一级毛片aa_精品一区二区三区的国产在线观看_无遮挡边摸边吃奶边做的视频刺激_亚洲国产成人精品福利在线观看_99精品99久久久久久宅男_黄色在线观看视频网站 | 九色91视频_无码人妻aⅴ一区二区三区_国产高清成人久久_久久国产精品成人免费网站_97天天干_无码少妇一区二区三区免费_免费费很色视频大片_久荜中文字幕 | vr成人片在线播放网站_免费高清一区二区三区_精品国产青草久久久久96_国产一级牲交高潮片16_欧美视频精品全部免费观看_japan白嫩丰满少妇videoshd_粉嫩av一区二区三区四区五区_亚洲日韩av无码一区二区三区人 | 中文字幕在线国产_亚洲一本大道av久在线播放_男人进去女人爽免费视频_中文字幕无码日韩中文字幕_日日夜夜天天射_国内久久久_狠狠做深爱婷婷久久综合一区_国产高清福利无码视频 | 蜜臀免费av_国产十区_欧美激情内射喷水高潮_免费无码AV片在线观看软件_亚洲成色WWW久久网站夜月_一级特黄大片色_奇米777国产在线视频_亚洲精品中 | 欧美精产国品一二三类产品特点_久久久亚洲精品一区二区三区_夭天干天天躁天天摸_AV在线观看_免费毛片av_成人AV免费视频_91色伦_日本aaaa片毛片免费观看视频 | 久久第一页_午夜网站视频_亚洲精品www_亚洲欧洲日产国码无码_成人亚洲A片V一区二区三区色欲_夜夜爱夜夜做夜夜爽_丰满又黄又爽少妇毛片_人人dvd | 日日射视频_免费观看黄色片_成人你懂的_日日操夜夜爱_成人一区二区三区视频在线观看_四虎娱乐_公和熄小婷乱中文字幕_国产精品久久久久久久久久免费 | 天天做爰天天爽_一二三区高清_久久精品国产一区二区三区不卡_免费无人区男男码卡二卡_年轻富婆私密推油到高潮_视频一区二区不卡_国产欧美呀洲一区二区_在线观看av永久免费 | 国产精品96久久久久久久_在线免费观看av网站_黄色真人毛片_国产免费永久在线观看_AB无码精品一区二区三区人妖_国产精品人人做人人爽人_日韩成人极品在线内射3p蜜臀_无码专区男人本色 | 国内高清视频在线观看_永夜星河免费看_超碰公开免费_亚洲精品免费av_啦啦啦在线观看免费版中文_亚洲第一se情网站_亚洲AⅤ人片在线观看无_久久免费视频5 | 麻豆第一区mv免费观看网站_久久视频亚洲_亚洲成人欧美_国产精品免费一区二区三区观看_日本边添边摸边做边爱边_伦理片一区_美国一级大黄一片免费中文_污污污污污污污网站污 | nc5wz在线播放_国产成人精品午夜2022_高清欧美性猛交xxxx_欧美重口另类在线播放二区_日本啊v在线_97婷婷狠狠成为人免费视频_亚洲天堂中文_国产特级精品毛片视频 | 美女午夜视频_91com视频_我要看黄色a级片_日本中文字幕日韩精品免费_国产aⅴ无码专区亚洲av麻豆_日日夜夜爽爽_国产精品与欧美交牲久久久久_亚洲hd | 在线观看国产一区二区三区_99久久久99久久国产片鸭王_欧美日韩激情网_91精品国产色综合久久_国产精品网在线观看_丰满少妇被猛烈进入流水_色偷偷AV男人的天堂京东热_中文在线a | 亚洲精品成a人在线_成人在线免费观看视频网站_久久不见久久见www免费视频_99在线观看_在线高清理伦片a_久久精品看_成人精品区_天堂av性爱在线 | 中文字幕亚洲一区二区三区_人人妻人人玩人人澡人人爽_国产精品乱码精品久久久_国产二级av_日韩免费一区二区三区在线播放_亚洲成人1区2区_亚洲天堂导航_国产视频三 | 91超碰免费在线_日韩1级_18av在线免费观看_午夜在线免费观看视频_日本丰满大乳人妻无码_久久久黑人_久久人人爽爽爽人久久久_国产精品乱子伦xxxx裸 | 狠色狠狠色狠狠狠色综合久久_蜜色欲多人AV久久无码_国产又色又爽又黄又免费软件_亚洲色大网站WWW永久网站_六十路高龄老熟女m_国产影视一区二区三区_曰本a级片_亚洲精品久久久中文字幕 | 四色网站_久久久久人妻一区精品色_丁香婷婷综合在线麻豆_大屁股人妻女教师撅着屁股_精品丝袜国产自在线拍高清_99精品欧美一区_国产在线不卡2005_草草影院第一页 | 国产亚洲久_成人1区2区3区_99精品视频一区二区_四虎av永久免费观看_黄色毛片a级_色哟av_欧美日韩国产人妻无码_日韩不卡在线观看日韩不卡视频 | 精品国产亚洲第一区二区三区_gay取精潮喷10次_日韩国产在线看_国产一区二区三区网_九七视频在线观看_日韩在线中文字幕视频_高清无码专区av_av网站大全在线观看 | 日本高清免费一本视频100禁_在线不卡欧美精品一区二区三区_国产一区二区好的精华液_中文综合在线_国产啊啊啊视频在线观看_大地资源网免费观看高清_亚洲精品永久在线观看_日韩视频第一区 | 日日射视频_免费观看黄色片_成人你懂的_日日操夜夜爱_成人一区二区三区视频在线观看_四虎娱乐_公和熄小婷乱中文字幕_国产精品久久久久久久久久免费 | 在线观看成人高清a_99无码人妻一区二区三区免费_成人午夜网址_久久久久久草_999免费在线视频_欧美一区91_97爱视频_国产99久久久久久 | 精品久久久亚洲_九色新网址_人妻少妇偷人精品无码_亚洲第5页_99久久免费国产精品6_天堂中文最新版_欧美精品一区在线_久久久妇女国产精品影视 | 欧美一级鲁丝片_亞洲中文字幕第一_www.亚洲精品.com_欧美色香蕉_91桃色免费观看_红杏国产成人精品视频_国产精品片www48888_精品国产精品三级精品av网址 | 日本熟妇人妻xxxxx_日本人伦一区二区三区_久久另类_欧美激情影音先锋_草久久精品_亚洲va天堂va在线va欧美_欧美GAY猛男GAYA片18禁_欧美性久久久 | 殴美性猛交_欧美白妞大战非洲大炮_熟女人妻在线视频_亚洲AV在线观看天堂无码_艹逼视频免费看_野外一级片_九一视频免费_无码精品人妻一区二区三区aV | 老司机免费在线视频_成人做爽爽爽爽免费国产软件_四虎在线免费观看_懂色av中文一区二区在_亚洲AV无码乱码日韩欧美_亚洲二三区_玖玖玖在线观看_婷婷成人基地 | 岛国a视频在线观看免费18在线看_午夜色场_成人激情视频网站_日韩观看_亚洲欧洲综合有码无码_国色天香卡一卡二乱码_老司机福利在线视频_免费国产高清在线精品一区 | 免费成人网在线观看_上海少妇69式偷拍hd_91色噜噜狠狠狠狠色综合_亚洲乱妇19p_国产女人50精品二区毛片视涩漫_日韩精品资源在线_四虎影视免费永久在线_成人一区二区三区久久精品嫩草 | 亚洲精品宾馆在线精品酒店_色窝窝色蝌蚪在线视频_麻豆传媒tv_国产9999精品_大地资源第二页中文高清版_国产一级爱_亚洲AV无码国产在丝袜线观看_噜噜噜亚洲色成人网站∨ | 久草新在线_亚洲婷婷六月的婷婷_欧美成人看片一区二区三区尤物_国产特黄在线_久久亚洲精中文字幕西条琉璃_久草热在线_国内91视频_欧美日本久久久 | 亚洲人和日本人videos_在线地址一地址二免费看_日本久久亚洲_农村少妇无套内谢粗又长_国产精品IGAO视频网_欧美牲交作爱在线_国产10000部拍拍拍免费视频_日本50岁丰满熟妇xxxx | 在线观看免费国产小视频_国产黄色在线_久久久久久国产精品免费免费_成全视频在线观看免费高清在线观看_国产精品国产三级国产专播_FREEZEFRAME丰满老妇_国产强伦姧在线观看无码_国产性色强伦免费视频 | AV永久天堂一区二区三区香港_精品成人乱色一区二区_亚洲av片毛片成人观看兔费_欧美精品一区二区三区A片_狠狠综合久久久久综合网址_国产精品12区_成人中文网_亚洲国产精品成人无码区 |