- PR -

SQL Server 2005 CLR VB2005 DBアクセス方法

投稿者投稿内容
ろーちゃん
ベテラン
会議室デビュー日: 2005/05/26
投稿数: 79
投稿日時: 2007-01-17 09:25
SQL Server 2005 CLR ですが VB2005でOleDbConnection.Openできないのですが、、、

VB2005のWinAppから呼び出すとちゃんとOPENするのですが、
SQL Server 2005 から呼び出すとOPENでこけます。

ソースは以下です
----
Imports System.Data.OleDb


connStr = "Provider=SQLOLEDB.1;Password=xxxxxxx;Persist Security
Info=True;User ID=sa;Initial Catalog=tbl_1;Data Source=SV01"

m_conn = New OleDbConnection(connStr)
m_conn.Open()
----
System.Data.OleDb が使えないのでしょうか?

OS:WinXPSP2
VS2005Developer
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-01-17 09:51
その前に、System.Data.SqlClient 名前空間を使わないことを不思議に思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ペンちゃん
ベテラン
会議室デビュー日: 2006/08/04
投稿数: 61
投稿日時: 2007-01-17 10:19
マルチポスト先
http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=18797&rev=&no=0
http://bbs.wankuma.com/index.cgi?mode=al2&namber=113
http://hanatyan.sakura.ne.jp/bbs/wforum.cgi?mode=allread&no=4824&page=0
http://bbs.pegalabo.net/c-board.cgi?cmd=ntr;tree=356;id=dotnet
解決したら全ての掲示板にフィードバックをお願いします。

#マルチポスト先1件追加
#マルチポスト先さらに1件追加
引用:

ろーちゃんさんの書き込み (2007-01-17 09:25) より:
SQL Server 2005 CLR ですが VB2005でOleDbConnection.Openできないのですが、、、

VB2005のWinAppから呼び出すとちゃんとOPENするのですが、
SQL Server 2005 から呼び出すとOPENでこけます。

ソースは以下です
----
Imports System.Data.OleDb


connStr = "Provider=SQLOLEDB.1;Password=xxxxxxx;Persist Security
Info=True;User ID=sa;Initial Catalog=tbl_1;Data Source=SV01"

m_conn = New OleDbConnection(connStr)
m_conn.Open()
----
System.Data.OleDb が使えないのでしょうか?

OS:WinXPSP2
VS2005Developer




[ メッセージ編集済み 編集者: ペンちゃん 編集日時 2007-01-18 09:58 ]

[ メッセージ編集済み 編集者: ペンちゃん 編集日時 2007-01-30 17:22 ]
ろーちゃん
ベテラン
会議室デビュー日: 2005/05/26
投稿数: 79
投稿日時: 2007-01-17 13:41
もしかして System.Data.OleDb を使う時点でOUTですか?
他のDBにConnectionStringを使って接続するのは無理なのでしょうか?
ろーちゃん
ベテラン
会議室デビュー日: 2005/05/26
投稿数: 79
投稿日時: 2007-01-17 17:57
一応

http://www.atmarkit.co.jp/fdb/rensai/sqls05try05/sqls05try05_1.html

で、OPENはできるようになりました。
あと、​SqlDataReader の値を吸い出して、ファイルに書き出すのですが

Dim sw As New StreamWriter("C:\sql\Test.txt", False, System.Text.Encoding.GetEncoding("Shift_Jis"))

で、セキュリティエラー(permissionがどうやらこうやら)が出て、
どうしていいかわかりません。C:\sqlフォルダーのセキュリティをどうにかしないと
いけないみたいですが、そこで行き詰ってます。
どうすればいいでしょうか?
99ri
大ベテラン
会議室デビュー日: 2006/09/09
投稿数: 129
投稿日時: 2007-01-18 11:46
VS2005アプリケーション SQLSERVERプロジェクト?
現象
SQLServerが稼動しているホストにファイルを作成するとエラーが発生する

*リンク先によるとファイルのアクセス権限はあるということ
dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&namber=18797&type=0&space=0&no=0

*リンク先にCLR関係との指摘があるので
http://bbs.wankuma.com/index.cgi?mode=al2&namber=113

この辺のドキュメントが参考になるのでは
msdn2.microsoft.com/ja-jp/library/ms345101.aspx

SQL Server 2005 Books Online
SAFE 権限が設定されているアセンブリで実行されるコードは、
ファイル、ネットワーク、環境変数、レジストリなどの外部システム リソースに
アクセスできません。

[ メッセージ編集済み 編集者: 99ri 編集日時 2007-01-18 11:52 ]
ろーちゃん
ベテラン
会議室デビュー日: 2005/05/26
投稿数: 79
投稿日時: 2007-01-18 15:36
引用:

99riさんの書き込み (2007-01-18 11:46) より:

この辺のドキュメントが参考になるのでは
msdn2.microsoft.com/ja-jp/library/ms345101.aspx

SQL Server 2005 Books Online
SAFE 権限が設定されているアセンブリで実行されるコードは、
ファイル、ネットワーク、環境変数、レジストリなどの外部システム リソースに
アクセスできません。



VB側の方はアンセーフにすればよいことがわかりました。
問題がSQLServer側の設定で「データベース所有者(DBO)にUNSAFE ASSEMBLY権限があり、
データベースのTRUSTWORTHYデータベースプロパティが有効」でないといけないと、エラー
がでました。TRUSTWORTHYデータベースプロパティとは一体どこで設定すればよいか
わかりません。
BooksOnlneには「ALTER DATABASE ステートメントを使用して ON に設定できます。」
とは書いてるものの、具体的な構文のサンプルが無く、行き詰っている状態です。
TRUSTWORTHYデータベースプロパティはどのようにして変えればよいのでしょうか?

99ri
大ベテラン
会議室デビュー日: 2006/09/09
投稿数: 129
投稿日時: 2007-01-18 17:07
もう一度ドキュメントをみてください
msdn2.microsoft.com/ja-jp/library/ms345101.aspx

方針としては
UNSAFEではなくてEXTERNAL_ACCESS が望ましいとおもいます

ALTER DATABASE ステートメントを使用.... は
SQLサーバの管理者が事前に設定すべき類で一般のアプリがやることではありません

私は経験と環境がないのでEXTERNAL_ACCESSの設定方法はすぐにはわかりません

===以下追加===
変更SQL文です (権限が必要です)
http://msdn2.microsoft.com/ja-jp/library/ms177563.aspx 構文規則
http://msdn2.microsoft.com/ja-jp/library/ms174269.aspx

ALTER DATABASE database_name SET TRUSTWORTHY ON

このオプションを設定するには、sysadmin 固定サーバー ロールのメンバシップが必要です。
このオプションの状態を確認するには、sys.databases カタログ ビューの is_trustworthy_on 列を調べてください。




[ メッセージ編集済み 編集者: 99ri 編集日時 2007-01-18 17:35 ]

[ メッセージ編集済み 編集者: 99ri 編集日時 2007-01-18 21:52 ]

スキルアップ/キャリアアップ(JOB@IT)