今天,Leader 吩咐要修改管理账户的密码,我负责的Part是修改package和 Replication的Job的密码。仔细想了下,由于我们使用的Windows验证方式,而Job在执行时,是使用Proxy,只需要修改Proxy使用的Credentials 即可。
方式1,使用UI修改Credentials的Password
Step1,查看Job Step使用的Proxy
Step2,查看SSIS Package Execution使用的Proxy
Step3,查看Proxy使用的Credentials
Step4,在Security->Credentials中修改Credentials对应的Password
方式2,使用TSQL 语句修改Credentials的Password
USE [master] GO ALTER CREDENTIAL [ETL_Job] WITH IDENTITY = N‘domain\username‘, SECRET = N‘145qwer‘ GO
如果Credentials非常多,那么这样修改将是十分麻烦的。我们的Server使用Replication来实现读写分离,而每一个Subscription 都有一个Credentials,如果使用UI逐个修改上百个Credentials将会十分耗时。SQL Server使用系统表 sys.credentials 存储本机的所有Credentials,可以使用 cursor 和动态 SQL 逐个修改。
USE [master] GO --declare variable declare @sql nvarchar(max) declare @CredentialsName sysname declare @Credentials_Identity sysname declare @Password sysname --set variable value set @Credentials_Identity=N‘domain\username‘ set @Password=N‘145qwer‘ --declare cursor DECLARE cur_credentials cursor LOCAL FORWARD_ONLY FAST_FORWARD READ_ONLY for select name from sys.credentials where credential_identity=@Credentials_Identity open cur_credentials FETCH from cur_credentials into @CredentialsName while (@@FETCH_STATUS=0) begin set @sql=N‘ALTER CREDENTIAL ‘+ @CredentialsName +N‘ WITH IDENTITY = N‘‘‘+@Credentials_Identity +N‘‘‘ ,SECRET = N‘‘‘+@Password+N‘‘‘‘; exec @sql; FETCH from cur_credentials into @CredentialsName end CLOSE cur_credentials DEALLOCATE cur_credentials
时间: 2024-10-28 11:18:39