2017-03-08 11 views
2

の権限プロジェクトDBA(約)として、私はタイプエイリアスを作成しました:SQL - ユーザー定義エイリアスタイプ

CREATE TYPE StockQuantity AS numeric(18,2) 

私は、ビューやテーブルでなどという使用しました。

データベースパーミッション(プロジェクト政治)がやや低下している他の開発者の中には、これらのビューやパーミッションを更新できないものがあります。

、彼らがしようとすると、彼らが得る:彼らは(18,2)の数値でStockQuantityを交換した場合

Cannot find the type 'StockQuantity', because it does not exist or you do not have permission. 

、それが正常に動作します。 私はALTERスクリプトを実行すると、正常に動作します。

明らかに、SQL Serverはエイリアスタイプをアクセス許可が必要なものと見なします。ああ。

これを修正するには何が必要ですか? ここではあまり関係がないように思われる、ユーザ定義のテーブルタイプに対するEXECUTE権限を与えることについては、私が見つけることができる唯一の検索結果ですか?

+2

[エイリアスの種類を使用したバッド習慣:Aaron Bertrand - 2009-10-14](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/14/bad-habits-to-kick-using -alias-types.aspx) – SqlZim

+0

ええ、私はすでにその投稿に出会った。私はエイリアスタイプの(幾分dissappointing)制限を認識しています。私はエイリアスタイプのフラグを立てる性質は、ここで使う価値があるほど十分に価値があると結論づけました。 – Brondahl

答えて

0

回答 - 他のユーザーに参照権限を付与する必要がありました。デフォルトのユーザーによって

GRANT REFERENCES ON TYPE::dbo.StockQuantity TO OtherDevUser; 

EXECUTEVIEW DEFINITIONを持っていました。私はREFERENCESを割り当てて、物事は再び働いた。利用可能 その他の権限はTAKE OWNERSHIPCONTROLある


これは、作成したタイプのために実際に必要であることを

MSDNの引用:sp_addtypeをを使用して作成されたユーザ定義型とは異なりhttps://msdn.microsoft.com/en-us/library/ms175007.aspx

、パブリックデータベースロールCREATE TYPEを使用して作成された型に対するREFERENCES権限は自動的に付与されません。この権限は別途付与する必要があります。


私はここでの問題のより広範な議論を見つけることによって、これを解決: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/274456c2-1e4a-436b-b10b-a972e95f9e87/references-and-view-definition-permissions-to-a-user-on-an-alias-data-type?forum=sqlsecurity

を他の人が、私は彼が実行するようになった演技たものをユーザー確立するには:

SELECT CURRENT_USER 

何を確認するにはパーミッション私と他のデベロッパーは走っていた:

SELECT * FROM fn_my_permissions('StockQuantity','type') 
関連する問題