久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么編寫SQLSRVER同步ID腳本

174次閱讀
沒有評論

共計 4501 個字符,預計需要花費 12 分鐘才能閱讀完成。

本篇內容主要講解“怎么編寫 SQLSRVER 同步 ID 腳本”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“怎么編寫 SQLSRVER 同步 ID 腳本”吧!

USE [master]
/****** Object: StoredProcedure [dbo].[sp_hexadecimal] Script Date: 2018/8/9 10:48:17 ******/
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE PROCEDURE [dbo].[sp_hexadecimal] 
 @binvalue varbinary(256), 
 @hexvalue varchar (514) OUTPUT 
AS 
DECLARE @charvalue varchar (514) 
DECLARE @i int 
DECLARE @length int 
DECLARE @hexstring char(16) 
SELECT @charvalue =  0x  
SELECT @i = 1 
SELECT @length = DATALENGTH (@binvalue) 
SELECT @hexstring =  0123456789ABCDEF  
WHILE (@i  = @length) 
BEGIN 
 DECLARE @tempint int 
 DECLARE @firstint int 
 DECLARE @secondint int 
 SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1)) 
 SELECT @firstint = FLOOR(@tempint/16) 
 SELECT @secondint = @tempint - (@firstint*16) 
 SELECT @charvalue = @charvalue + 
 SUBSTRING(@hexstring, @firstint+1, 1) + 
 SUBSTRING(@hexstring, @secondint+1, 1) 
 SELECT @i = @i + 1 
END 
 
SELECT @hexvalue = @charvalue 
GO
USE [master]
/****** Object: StoredProcedure [dbo].[sp_help_revlogin] Script Date: 2018/8/9 10:48:23 ******/
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE PROCEDURE [dbo].[sp_help_revlogin] @login_name sysname = NULL AS 
DECLARE @name sysname 
DECLARE @type varchar (1) 
DECLARE @hasaccess int 
DECLARE @denylogin int 
DECLARE @is_disabled int 
DECLARE @PWD_varbinary varbinary (256) 
DECLARE @PWD_string varchar (514) 
DECLARE @SID_varbinary varbinary (85) 
DECLARE @SID_string varchar (514) 
DECLARE @tmpstr varchar (1024) 
DECLARE @is_policy_checked varchar (3) 
DECLARE @is_expiration_checked varchar (3) 
 
DECLARE @defaultdb sysname 
 
IF (@login_name IS NULL) 
 DECLARE login_curs CURSOR FOR 
 
 SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM 
sys.server_principals p LEFT JOIN sys.syslogins l 
 ON ( l.name = p.name ) WHERE p.type IN (  S ,  G ,  U  ) AND p.name    sa  
ELSE 
 DECLARE login_curs CURSOR FOR 
 
 
 SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM 
sys.server_principals p LEFT JOIN sys.syslogins l 
 ON ( l.name = p.name ) WHERE p.type IN (  S ,  G ,  U  ) AND p.name = @login_name 
OPEN login_curs 
 
FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin 
IF (@@fetch_status = -1) 
BEGIN 
 PRINT  No login(s) found.  
 CLOSE login_curs 
 DEALLOCATE login_curs 
 RETURN -1 
END 
SET @tmpstr =  /* sp_help_revlogin script.   
PRINT @tmpstr 
SET @tmpstr =  ** Generated   + CONVERT (varchar, GETDATE()) +   on   + @@SERVERNAME +   */  
PRINT @tmpstr 
PRINT   
WHILE (@@fetch_status   -1) 
BEGIN 
 IF (@@fetch_status   -2) 
 BEGIN 
 PRINT   
 SET @tmpstr =  -- Login:   + @name 
 PRINT @tmpstr 
 IF (@type IN (  G ,  U)) 
 BEGIN -- NT authenticated account/group 
 
 SET @tmpstr =  CREATE LOGIN   + QUOTENAME( @name ) +   FROM WINDOWS WITH DEFAULT_DATABASE = [ + @defaultdb + ]  
 END 
 ELSE BEGIN -- SQL Server authentication 
 -- obtain password and sid 
 SET @PWD_varbinary = CAST( LOGINPROPERTY( @name,  PasswordHash  ) AS varbinary (256) ) 
 EXEC sp_hexadecimal @PWD_varbinary, @PWD_string OUT 
 EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT 
 
 -- obtain password policy state 
 SELECT @is_policy_checked = CASE is_policy_checked WHEN 1 THEN  ON  WHEN 0 THEN  OFF  ELSE NULL END FROM sys.sql_logins WHERE name = @name 
 SELECT @is_expiration_checked = CASE is_expiration_checked WHEN 1 THEN  ON  WHEN 0 THEN  OFF  ELSE NULL END FROM sys.sql_logins WHERE name = @name 
 
 SET @tmpstr =  CREATE LOGIN   + QUOTENAME( @name ) +   WITH PASSWORD =   + @PWD_string +   HASHED, SID =   + @SID_string +  , DEFAULT_DATABASE = [ + @defaultdb + ]  
 
 IF ( @is_policy_checked IS NOT NULL ) 
 BEGIN 
 SET @tmpstr = @tmpstr +  , CHECK_POLICY =   + @is_policy_checked 
 END 
 IF ( @is_expiration_checked IS NOT NULL ) 
 BEGIN 
 SET @tmpstr = @tmpstr +  , CHECK_EXPIRATION =   + @is_expiration_checked 
 END 
 END 
 IF (@denylogin = 1) 
 BEGIN -- login is denied access 
 SET @tmpstr = @tmpstr +   DENY CONNECT SQL TO   + QUOTENAME( @name ) 
 END 
 ELSE IF (@hasaccess = 0) 
 BEGIN -- login exists but does not have access 
 SET @tmpstr = @tmpstr +   REVOKE CONNECT SQL TO   + QUOTENAME( @name ) 
 END 
 IF (@is_disabled = 1) 
 BEGIN -- login is disabled 
 SET @tmpstr = @tmpstr +   ALTER LOGIN   + QUOTENAME( @name ) +   DISABLE  
 END 
 PRINT @tmpstr 
 END 
 
 FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin 
 END 
CLOSE login_curs 
DEALLOCATE login_curs 
RETURN 0 
GO

到此,相信大家對“怎么編寫 SQLSRVER 同步 ID 腳本”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-20發表,共計4501字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 平江县| 临潭县| 车致| 澄城县| 称多县| 石首市| 乌海市| 分宜县| 万源市| 商南县| 息烽县| 鹤庆县| 阿坝县| 沅江市| 科技| 凌云县| 武清区| 西青区| 斗六市| 三江| 台山市| 昌吉市| 神池县| 黄陵县| 惠东县| 宁津县| 和林格尔县| 英德市| 汕头市| 阜康市| 潞西市| 曲阳县| 财经| 武山县| 历史| 色达县| 江北区| 高唐县| 太保市| 乌兰浩特市| 慈溪市|