SQL Server 2000の古いストアドプロシージャには、SQL Serverの役割を担うユーザーアプリケーションのセキュリティに使用されていたアプリケーションからシステムカタログが更新されていました組み込みセキュリティとNTログイン。ストアドプロシージャからのシステムカタログの更新
我々はSQL Server 2008にDBを移行し、システムカタログへ
アドホック更新は許可されていません我々はSQL Server 2008のエラーを取得し、これらのストアドプロシージャを実行してみてください。
SQL Server 2005以降では、MSがカタログの更新をサポートしていないことを確認しました(専用管理者接続(DAC)を使用していない場合)。
誰かが新しいバージョンやSqlサーバーで実行されている.Netコードのような他の方法でこれを行う方法を教えてくれれば幸いです。
update sysusers
set roles = convert(varbinary(2048), substring(convert(binary(2048), roles), 1, @ruidbyte-1)
+ convert(binary(1), ([email protected]) & substring(convert(binary(2048), roles), @ruidbyte, 1))
+ substring(convert(binary(2048), roles), @ruidbyte+1, [email protected])),
updatedate = getdate()
where uid = @memuid
delete from syspermissions where grantee = @uid
delete from sysusers where uid = @uid
insert into sysusers
values(@uid, 0, @rolename, NULL, 0x00, getdate(), getdate(), @owner, NULL)
基本的に、これらのシステムカタログ**ビュー**(SQL Server 2005/2008以降)は、システムテーブルへの読み取り専用ビューです。これらのシステムテーブルは、T-SQLとSQL-CLRのどちらの通常のコードでも編集できません。このような操作を行うには、CREATE USERやDROP USERのような公開APIを使用する必要があります。これを行うと、システムカタログビューは自動的に更新されます。 –
@marc_sと合意しました。セキュリティ。 –