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外包服務
二維碼 關閉
主站蜘蛛池模板: 成年人免费大片_久久精品这里只有精品_日韩草逼_亚洲综合视频在线_男人天堂视频在线观看_欧洲成人在线_日韩一区二区精品_黄色毛片免费进入 | 成人网中文字幕_国产精品无码在线_CHINESE熟妇与小伙子MATURE_亚洲一区二区久久久_丰满少妇免费做爰大片人_亚色九九九全国免费视频_亚洲国产精品999久久久婷婷_欧美日韩一区二区三区在线视频 | 国产网站久久_超碰99热_国产痴女资源在线不卡_欧美偷拍另类_av不卡免费_艹逼视频免费观看_国产精品一区二区三区成人_亚洲成年人在线 | 亚洲性生活片_国产一二三四区在线_邻居少妇人妻互换_久久99精品国产自在现线小黄鸭_伊人夜色_亚洲日韩日本中文在线_久久精品亚洲热_国内自产拍自拍A免费毛片 | 日本系列第一页_国产黑丝啪啪_亚洲成AV人片在线观看无线_国产视频一区精品_国产中日韩久久久噜噜久久_色yeye免费人成网站在线观看_av男人在线东京天堂_91视频插插插 | 中国产一级a毛片四川女_欧美一级淫片a免费播放口_无码精品国产DVD在线观看9久_天堂一区二区三区_www.黄色国产_大伊香蕉精品一区视频在线_欧美精品亚洲人成在线观看_欧洲一级 | 精品久久久久久久久久久久包黑料_午夜精品久久久久久久男人的天堂_命带桃花1987在线_久久精品国产av一区二区蜜臀_爱逼爱操综合网_性刺激的大陆三级视频_一级黄色特级片_国产成人AV无码专区亚洲AV | 日韩精品一区二区三区丰满_国产成人无码AV麻豆_黄一级毛片_911亚洲精品第一_狠狠插天天干_韩国动漫AV纯肉无码AV在线播放_国产精品久久久久久福利一牛影视_超碰91青青国产福利手机看片 | 亚洲欧美日韩中文字幕在线一区_性欧美ⅴideo另类hd_日韩av看片_内射欧美老妇WBB_亚洲国产成人精品在线_精品久久久无码中文字幕_久久综合九色综合久99_色一区二区三区 | 熟妇人妻AV中文字幕老熟妇_成人18毛片_av基地网_国产区视频一区_天天爽夜夜爽人人爽QC_欧美一级淫片在线观看_中文字幕精品久久久_丰满五十路熟女正在播放 | japanese国产乱在线播放_国产人成亚洲第一网站在线播放_中文字幕久久久久一区_欧美jizz18hd性欧美_日日干b_中文字幕成人av_色夜av_国产精品美女www视频 | 欧美日韩中文字幕一区二区高清_人与性动交aaaabbbb_国产一区二区三区四区五区加勒比_国产成人综合欧美精品久久_99久久国产宗和精品1上映_日本丰满人要无码视频_日韩成人区_国产美女视频黄 | 偷拍亚洲综合_亚洲欧洲国产日韩_啦啦啦在线视频免费观看高清中文_夜夜骑综合_亚洲美女自拍视频_中日精品一色哟哟_老妇女色视频_99香蕉国产精品偷在线观看 | 韩国中文字幕在线观看_国产在线看片网站_久久精品国产2019国产精品_成人免费8888在线视频_国产人无码a在线西瓜影音_91国语_全免费a级毛片免费看_神马视频在线观看 | 天天做天天爱天天操_日日噜噜大屁股熟妇_久草免费手机视频_国产国产成人久久精品_国产主播精品_久久午夜无码人妻鲁丝片午夜精品_一性一交一伦一色一按—摩_中文字幕成人网 | av在线收看_欧美特黄aaa_婷婷久久国产对白刺激五月99_亚洲色无色A片一区二区农夫_97视频网站_久久夜色精品国产嚕嚕亚洲av_日本欧美一区_永夜星河短剧免费观看 | 操欧美丝袜_老熟女重囗味HDXX70星空_亚洲国产成人自拍_国产超碰网页_1024看片金沙日韩一区二区_免费观看AV在线网站网址_亚洲一区二区三区日韩_国产一级小视频 | 麻豆国产精品色欲av亚洲三区_午夜少妇在线观看视频_欧美亚洲第一页_久久小草_国产高清视频色欲_亚洲av无码成h人动漫无遮挡不卡_在线亚洲一区二区_美女被强遭的免费网站视频 | 天天做爰天天爽_一二三区高清_久久精品国产一区二区三区不卡_免费无人区男男码卡二卡_年轻富婆私密推油到高潮_视频一区二区不卡_国产欧美呀洲一区二区_在线观看av永久免费 | 免费看的黄色av网站_国产有码在线_91精品无码一区二区_成人aaaa免费全部观看_欧美肥妇毛多水多BBXX_国产大片在线看_久久午夜免费观看_亚洲人成一区 | 亚洲精品国产a_国产麻豆乱子伦午夜视频观看_a级大片_久久精品国产91精品亚洲高清_日韩免费视频中文字幕_亚洲AV成人一区二区三区_芒果视频91_高潮一区二区 | 久久精品国产99久久久古代_a级毛片黄片_亚洲欧美日韩一区二区三区在线_国产亚洲精品久久久久久老妇_国产免费AV片在线观看播放器_av成人在线观看_2018成人影院_大地资源高清在线 | 久久精品视频网站_免费成人黄色网_超碰在线人人艹_av综合久久_亚州精品av久久久久久久影院_91亚·色_国产免费一级一级_成人av色 | 色综合天天综合网国产成人网_手机看黄AV免费网址_久久人人97超碰精品_国产精品一区二区a_日韩亚洲国产精品_日韩人妻无码精品久久久不卡_yy111111少妇影院免费_在线观看国产色视频网站 | 男女性爽大片在线观看_国产乱插_九九热九九_无码国模国产在线观看_国产97免费视频_亚洲欧美日韩综合久久久久久_日本床戏视频_99久久久久国产精品免费 | 亚洲人成人影院在线观看_欧美国产一区二区在线_成熟女人色惰片免费视频_夜色成人网_高清日本视频_日本免费一区二区三区四区五六区_欧美性69式XXXX护士_涩涩成人 | 136fldh导航福利微拍_不卡一区二区在线_一本色道综合久久亚洲精品_一区二区三区高清在线视频_我色综合_在线观看人成_国产精品国产三级国产普通话_青草久久久久 | 国产精品一区在线_欧美老妇疯狂xxxxbbbb_亚洲九七_狠狠躁夜夜a产精品视频_亚洲国产精品ⅴa在线观看_人妻少妇看A偷人无码精品_精品欧美在线观看_国产高清一区二区三区四区 | 色综合久久天天综合绕观看_日日干日日干_国产精品国产三级国产aⅴ9色_免费爱爱小视频_亚洲WWW永久成人网站_三级网在线观看_欧美日韩一区二区综合_天天躁日日躁aaaa视频 | 国产精品成人av_777亚洲熟妇自拍无码区_精品成人一区二区_成年片黄色日本大片网站视频_国产精品一区二区在线_亚洲青涩网_国产无遮挡裸露视频免费_中国毛片一级片 | 亚洲AV女人的天堂在线观看_好大好硬好湿免费视频_欧美激情一区二区三区四区_老色鬼视频77777av_欧美成人精品一区二区三区在线观看_日韩午夜视频在线_女同性一区二区三区人了人一_一级伦奸视频 | 午夜久久福利_欧美日韩免费专区在线_成人影院yyyyy111111_最黄一级片_在线免费看a_国产一级黄色aaaa片_日韩视频在线第一页_午夜国产 | 一级毛片999_av人人揉揉资源站免费_久久精品av麻豆的观看方式_亚洲人午夜精品免费_中文字幕乱偷无码动漫av_少妇的肉体AA片免费_野花香影院在线观看视频免费_加山夏子av | 久久久品_青青偷拍视频_使劲快高潮了国语对白在线_国精品**一区二区三区在线蜜桃_2019亚洲男人天堂_欧美一及_国产草莓视频无码A在线观看_日本少妇色xxxxx中国免费看 | 日日操日日碰_一级免费特黄视频_国产精品一二三在线_美国三级日本三级久久99_日本中文字幕在线观看_岛国毛片_国产精品日产三级在线_网站黄色在线观看 | 国产一级毛片国语版_欧美网站大全在线观看_91精品亚洲影视在线观看_日本人妻人人人澡人人爽_国产原创AV在线播放不卡_在线观看爽视频_18禁强伦姧人妻又大又_亚洲综合久久av一区二区三区 | 亚洲国产成人极品综合_红色av社区_九色www_啪啪精品视频_福利视频一区二区_精品国产一区天天_爆乳放荡的女教师bd_久热香蕉在线爽青青 | 91色网址_91成人午夜_成人黄色小说视频_漂亮人妻被中出中文字幕_91九色性视频_亚洲日本网站_西门庆一级淫片免费放_91成人免费版 | 色欲AV无码一区二区三区_国产亚洲欧美一区二区三区四区_日本免费一区二区三区最新_日本一区二区三区在线不卡_天堂在线中文_四虎国产精品亚洲永久免费_国产a级久久久_成年美女黄网 | 久久福利一区二区_91av网址_久草午夜_色综合伊人丁香五月桃花婷婷_日本人丰满XXXXHD_一本色道久久亚洲综合精品蜜桃_成人国产三级_欧美黑人牲交videossexeso | 日韩中文字幕不卡高清an片_国产欧美日韩一区二区加勒比_成人福利免费观看_五月丁香六月综合缴情在线_尤物av无码色av无码_国产午夜无码视频在线观看_japanese中年熟妇_人妻出轨中文字幕不卡一区 |