4

問題

ストアド プロシージャの作成は許可されているが、実行は許可されていない SQL Server ログインがあります。別のログインを使用して実行を許可することはできないため、sp でコードを実行するか、これらのアクセス許可を許可する別の方法を探しています。

オブジェクト 'sp_mystoredprocedurename'、データベース 'mydatabasename'、スキーマ 'dbo' に対する EXECUTE 権限が拒否されました。

ユーザーは自分自身に実行を許可できません

sa、dbo、エンティティの所有者、information_schema、sys、または自分自身にアクセス許可を付与、拒否、または取り消すことはできません。

バックグラウンド

Powerbuilder で記述された Windows ソフトウェア アプリケーションがあり、それ自体で動作する SQL Server データベースを作成および更新します。

最初の起動時に、アプリケーションは、データベースとログインを作成するために 1 回使用する (この情報は保存しません) データベース管理者ログインを要求します。ログインと権限が与えdb_ddladminられます。現在、数百のこれらのアプリケーションとデータベースが、当社が管理するサーバー上で実行されていますが、顧客自身のサーバーでも実行されています。db_datareaderdb_datawriter

このため、ユーザーに db admin ログインを再度要求する必要がないようにするために何でもします。これにより、実行権限を付与できます。これが最も簡単な方法です... すべてのサーバーを SQL Server 2000 にダウングレードすることももちろんそうではありません。オプション :)

私が実装しようとしているストアド プロシージャは、「getnewid」メソッドです。現在、私の Powerbuilder コードは複数の埋め込み TSQL ステートメントを使用してこれを実現していますが、ネットワーク パフォーマンスの問題のため、これらを単一のストアド プロシージャに移動したいと考えています。

4

2 に答える 2

4

これは役に立ちますか?

CREATE ROLE db_executer
GRANT EXECUTE to db_executer
EXEC sp_addrolemember N'db_executer', N'<username>'
于 2013-07-11T09:50:54.323 に答える