2017-08-06 13 views
-1

ストアドプロシージャを使用してユーザーパスワードを変更しようとしています。私はalterスクリプトを直接変更しようとすると、例えば、ストアドプロシージャを使用してユーザーパスワードを変更しようとしています

Cannot alter the login 'ddladmin', because it does not exist or you do not have permission.

しかし:私はエラーを取得しています上記のクエリでは

DECLARE @newpwd VARCHAR(20) 
DECLARE @usrid VARCHAR(50) 
DECLARE @SQL NVARCHAR(4000) 
DECLARE @oldpass VARCHAR(50) 

SET @usrid = 'ddladmin' 
SET @newpwd = '[email protected]' 
SET @oldpass = '[email protected]' 

SET @SQL = 'ALTER LOGIN ' + @usrid + ' WITH PASSWORD = ' + QUOTENAME(@newpwd, '''') + ' OLD_PASSWORD = ' + QUOTENAME(@oldpass, ''''); 

EXEC sp_executesql @SQL 

ALTER LOGIN ddladmin WITH PASSWORD ='[email protected]' 

です。誰でも助けてくれますか?

+0

このプロセスを変更する理由は何ですか?時間の経過とともにパスワードの変更を自動化しますか?データベース接続が頻繁にそれを変更する必要がありますか?誰がパスワードを変更する権限を与えるのですか? –

+0

実際に私たちはセキュリティを向上させることを自動化しようとしています。私たちは仕事を予定しています.. –

+0

待って...何?ジョブをスケジュールします。これはアプリケーションユーザーですか、どのように業界標準のパスワードを適用していますか?通常、パスワードには変更プロセスが必要です。 –

答えて

0

エラーメッセージは非常に明確である:

because it does not exist or you do not have permission.

私はあなたのスクリプトを実行しようとしていると、それは私のためにエラーなしで働いていました。

あなたのサーバーにログインddladminが存在すると仮定すると、にはログインを変更する権限がありません。クエリを実行しているユーザーを確認し、最終的にchange the execution context

SELECT USER_NAME(), SUSER_NAME() 
EXEC sp_executesql @SQL  
EXECUTE AS LOGIN ='SA'  
SELECT USER_NAME(), SUSER_NAME()  
EXEC sp_executesql @SQL  
REVERT 
関連する問題