質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

Q&A

1回答

8019閲覧

Visual Studio によるSQL CLR公開処理で「信頼可能」がFalseに変えられてしまう

hsk

総合スコア728

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

0グッド

1クリップ

投稿2016/07/05 10:06

編集2016/07/06 00:47

こんにちは。Visual Studio 2013 (Professional) で、Unsafe な SQL CLR を登録(公開)させようとしていますが、次のエラーが発生します。

エラーメッセージ

SQL72014: .Net SqlClient Data Provider: メッセージ 10327、レベル 14、状態 1、行 1 アセンブリ '' の CREATE ASSEMBLY が失敗しました。PERMISSION_SET が UNSAFE の場合、アセンブリ '' は許可されません。次のいずれかに該当する場合に、アセンブリが許可されます。データベース所有者 (DBO) に UNSAFE ASSEMBLY 権限があり、データベースの TRUSTWORTHY データベース プロパティが有効になっている場合。または UNSAFE ASSEMBLY 権限のある対応するログインを含む証明書または非対称キーでアセンブリが署名されている場合。

ユーザーは sa です。

SQL Server Management Studio からsaでログインし、

SQL

1ALTER DATABASE dbname SET TRUSTWORTHY ON

は成功しました。

が、dbo または sa に UNSAFE ASSEMBLY 権限を与える方法がわかりません。

SQL

1GRANT UNSAFE ASSEMBLY to [sa]

とすれば

sa、dbo、エンティティ所有者、information_schema、sys、または自分自身に対する権限を許可、拒否、または取り消すことはできません。

と、

SQL

1GRANT UNSAFE ASSEMBLY to [dbo]

とすれば

メッセージ 15151、レベル 16、状態 1、行 1

ログイン 'dbo' を 検索 できません。存在しないか、権限がありません。

とエラーになります。

ちなみに
ログイン登録のあるユーザーを使って

SQL

1GRANT UNSAFE ASSEMBLY to [domain\user]

としたところ成功しましたが、公開処理でまったく同じエラーになります。

そして、判明したことは
データベースのオプション「信頼可能」がTrueになっているにもかかわらず、VisualSyudioから公開処理をするとFalseに変えられてしまうことです。

エラーメッセージでは2つの設定を行えばよいようですが、他にもどこかの設定を変える必要があるのでしょうか?

##補足事項

  • SQLServer2014 の Express Edition に公開させようとしています。
  • Visual Studio が公開処理用に生成したSQLコードがプロジェクト内のbinフォルダに作られるのですが、SQL Server Management Studio (GUI のコンソール)にsaでログイン(Visual Studio からの接続と同条件)から切り貼りして流すとうまく登録されて、使えます。

SQL

1-- :setvar DatabaseName "mydb" このような変数機能はSSMSでは使えないので、生成された生状態の$(DatabaseName)などは手編集で置き換え 2-- :setvar DefaultFilePrefix "mydb" 3 4CREATE ASSEMBLY [***] 5 AUTHORIZATION [dbo] 6 FROM 0x4D.....0000 7 WITH PERMISSION_SET = UNSAFE; 8 9GO 10ALTER ASSEMBLY [***] 11 DROP FILE ALL 12 ADD FILE FROM 0x4D.....0000 AS N'***.pdb'; 13 14GO 15CREATE PROCEDURE [dbo].[MyProcedure] 16@tableName NVARCHAR (MAX), @serverName NVARCHAR (MAX), @databaseName NVARCHAR (MAX) 17AS EXTERNAL NAME [***].[StoredProcedures].[MyProcedure] 18 19GO 20 21-- > コマンドは正常に完了しました。 22 23 24exec dbo.MyProcedure '12', '23', '34' 25 26-- > コマンドは正常に完了しました。 27

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

外しているかもですが
CLR 統合プログラミング モデルの制限事項
に引っかかっているとか?

投稿2016/07/05 19:58

dojikko

総合スコア3939

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hsk

2016/07/06 00:36

どうも有難う御座います。 書き忘れてしまったことがあります(質問本文にも補足します) VisualStudioによる自動公開はうまくいかないのですが、Management Studio で、SQL文をコピペするとしっかり登録され、利用可能になります。 Visual Studio2013はProfessional版なのですが、SQL Server 2014はExpress版です。エディションの制約なのでしょうか...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問