@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

SQLサーバーにデータを一括インポートしたいのですが

1
投稿者投稿内容
kana
会議室デビュー日: 2005/06/09
投稿数: 10
投稿日時: 2005-06-09 14:22
はじめまして。
いつも参考にさせていただいております。

SQLサーバー2000+ASP.NETで開発しております。
SQLサーバーにデータをインポートするため、以下のように書いたのですが、
「BLUK INSERTステートメントを使用する権限がありません」と出ます。
環境の問題なのか分からず糸口でも分かればと思い書き込みしました。
ささいなことでもいいのでどうかご教授お願いします。

<ソース(Try〜catch文省略)>
Dim strIniData As String

strIniData = "Data Source=DBSERVER;UID=ID1;PWD=ID1;Initial _
Catalog=sougyodbon;Integrated Security=SSPI"
SqlConn = New SqlConnection
'' DB接続文字列を設定する
SqlConn.ConnectionString = strIniData
'' DBオープン
SqlConn.Open()

'' トランザクション開始
SqlTrans = SqlConn.BeginTransaction()

SqlCmd = New SqlCommand
'' 実行するSQL文の設定
'SqlCmd.CommandText = "BULK INSERT DB1.dbo.[TAVLE1] FROM 'C:\temp\FILE1"
'' コマンドタイプにテキスト(SQL文)を指定
SqlCmd.CommandType = CommandType.Text
SqlCmd.Connection = SqlConn
SqlCmd.Transaction = SqlTrans
'' SQL発行
Dim intCnt As Integer
intCnt = SqlCmd.ExecuteScalar()

'' トランザクション確定
SqlTrans.Commit()
浮嶋
会議室デビュー日: 2004/01/08
投稿数: 14
投稿日時: 2005-06-09 15:52
失礼致します。

---引用---------------------------------------------------------------
SQLサーバー2000+ASP.NETで開発しております。
SQLサーバーにデータをインポートするため、以下のように書いたのですが、
「BLUK INSERTステートメントを使用する権限がありません」と出ます。
----------------------------------------------------------------------

文字通り権限がないのでしょうね。

「BULK INSERTコマンド」は、固定サーバーロールの
sysadmin または bulkadmin のメンバーでないと実行できません。




---引用---------------------------------------------------------------
strIniData = "Data Source=DBSERVER;UID=ID1;PWD=ID1;Initial _
Catalog=sougyodbon;Integrated Security=SSPI"
----------------------------------------------------------------------
上記コードの例で言いますと、ユーザー「ID1」が
sysadmin または bulkadminのメンバーでないと想像されます。

適切な権限を与えてあげましょう。

-----参考------------------------------------------------------------
BULK INSERT

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/tsqlref/ts_ba-bz_4fec.asp
---------------------------------------------------------------------
kana
会議室デビュー日: 2005/06/09
投稿数: 10
投稿日時: 2005-06-09 17:30
ご返答ありがとうございました。
しかし・・・
確認したところ、System Administoratorの欄はチェックしてありました、
試しに、BulK Insert Administoratorの欄もチェックしてやってみたのですが、
同様のエラーでした。
気になるのは
SQL Server Enterprises Manegerのセキュリティ→ログイン→該当IDのプロパティで
サーバーロールのBulK Insert Administoratorを選択すると説明欄が
「一括挿入操作を実行できません」となっています。
ほかの説明欄は「〜を出来ます」となっているのですが・・・
SQLサーバが使用を認めていないとかあるのですかね。。
浮嶋
会議室デビュー日: 2004/01/08
投稿数: 14
投稿日時: 2005-06-09 19:24
禰宜です。

SQLServerのデータベースサービスのアカウントは、どうなっているでしょうか?
Windowsのコントロールパネル-管理ツール-サービス内にある、
該当SQLインスタンスのプロパティを見て、
もし、ローカルシステムアカウントになっているなら、
Administratorアカウントに変えてみて下さい。
kana
会議室デビュー日: 2005/06/09
投稿数: 10
投稿日時: 2005-06-10 09:48
お世話になっております。

MSSQLSERVERはAdministratorになっています。
SQLSERVERAGENTもAdministratorになっています。
あとは全てローカルです。
他にAdministoratorにしないといけないものはありますか?
ya
大ベテラン
会議室デビュー日: 2002/05/03
投稿数: 212
投稿日時: 2005-06-10 12:32
コード:


strIniData = "Data Source=DBSERVER;UID=ID1;PWD=ID1;Initial _
Catalog=sougyodbon;Integrated Security=SSPI"



ユーザー、パスワードを指定する場合、Integrated Securityはfalseではないですか?つまりSQLServerの認証を使うのですよね?

# 追記
あと、UIDで通ります?MSDNに載ってないですが。User IDだと思うのですけど。

[ メッセージ編集済み 編集者: ya 編集日時 2005-06-10 12:42 ]
kana
会議室デビュー日: 2005/06/09
投稿数: 10
投稿日時: 2005-06-10 14:28
ありがとうございました!!
セキュリティの部分をはずしてみたらうまく行きました。
UIDの部分は問題なさそうです。
てか今までinsertとか普通に動いていたのがなぞですが・・
禰宜さん、yaさん本当にありがとうございました。
ya
大ベテラン
会議室デビュー日: 2002/05/03
投稿数: 212
投稿日時: 2005-06-10 19:10
Integrated SecurityがSSPIだったので、Windows認証で別のユーザーでつないでたというオチかと(具体的にはASPNETあたりとかのIISのアカウント)。

MSDNより引用

引用:

Integrated Security または Trusted_Connection

false の場合、ユーザー ID とパスワードは接続文字列で指定します。 true の場合は、現在の Windows アカウントの資格情報が認証に使用されます。
使用できる値は、 true 、 false 、 yes 、 no 、および sspi (推奨) です。 sspi は、 true と等価です。

1

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