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

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

新規登録して質問してみよう
ただいま回答率
85.50%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

2回答

6524閲覧

vb.netでSqlserver2014にADO接続し、Excelデータをインポート

kei5

総合スコア13

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2016/03/30 02:57

vb2008・sqlserver2014の環境でADO接続を行い、excel2013ファイルのあるシートをsqlserver上のテーブルにインポートしたいです。一応、下記のコードを編集していますが、分散クエリを利用しない方法(SQL文)をご教授いただきたいです。お忙しいところ申し訳ありませんがよろしくお願いいたします。

Dim mCon As ADODB.Connection Dim rs As ADODB.Recordset Dim strSQL As String Dim cn As String Dim Memo As String cn = "" '+ *** 接続文字列 *** cn &= "Provider=SQLOLEDB;" cn &= "Data Source = xx.xx.xx.xx;" cn &= "Initial Catalog = TEST;" cn &= "User ID=TEST; Password=TEST;" cn &= "Trusted_Connection = False;" 'ADODBオブジェクト作成 mCon = New ADODB.Connection '作業領域をクライアント側に設定 mCon.CursorLocation = ADODB.CursorLocationEnum.adUseClient 'SQLServerオープン mCon.Open(cn) 'SQL初期化 strSQL = "" ’**************このSQLの書き方がおかしいと思います。************* strSQL = "SELECT * INTO TESTCD FROM " & _ "OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', " & _ "'Data Source=C:\test\TEST.xls;" & _ "Extended Properties=Excel 8.0')...[TEST$]" ’**************このSQLの書き方がおかしいと思います。************* mCon.Execute(strSQL)

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

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

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

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

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

guest

回答2

0

スキーマが同じなら

SQL

1INSERT INTO [SQLServerTable] 2SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 3'Data Source=C:\test\TEST.xls;Extended Properties=EXCEL 8.0')...[TEST$] ;

投稿2016/03/30 08:05

dojikko

総合スコア3939

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

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

kei5

2016/03/31 01:42

回答有難うございます。ご教授いただいた方法でやってはみましたが、 「SQL Server によって、コンポーネント 'Ad Hoc Distributed Queries' の STATEMENT 'OpenRowset/OpenDatasource' に対するアクセスがブロックされました。このサーバーのセキュリティ構成で、このコンポーネントが OFF に設定されているためです。システム管理者は sp_configure を使用して、'Ad Hoc Distributed Queries' の使用を有効にできます。'Ad Hoc Distributed Queries' を有効にする手順の詳細については、SQL Server オンライン ブックで、'Ad Hoc Distributed Queries' を検索してください」というエラーが出ています(すみません。以前から出ていました)。SQLServer側は既に稼動しているので、設定は変更しない状態で解決できる方法はございますでしょうか?
dojikko

2016/03/31 02:32

[ad hoc distributed queries サーバー構成オプション](https://msdn.microsoft.com/ja-jp/library/ms187569.aspx) > SQL Server の既定では、OPENROWSET および OPENDATASOURCE を使用したアドホックな分散クエリは実行できません。このオプションを 1 に設定すると、SQL Server でアドホック アクセスを実行できます。このオプションを設定しなかった場合または 0 に設定した場合は、SQL Server でアドホック アクセスを実行できません。 OPENDATASOURCE 関数はアドホック アクセスを使うようなので、設定が変更できないとなると難しいと思います どんなスキーマかわかりませんが稼働中のシステムに対してならバルクインサートでいいんじゃないですか?
guest

0

INSERT INTO [tableA]
SELECT * FROM [tableB]
じゃないでしたっけ。

あと、ファイルの置き場はPGの実行PCではなく、DBサーバになりますのでご注意を。

投稿2016/03/30 03:33

lilithchan

総合スコア249

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

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

kei5

2016/03/31 01:42

回答有難うございます。ご教授いただいた方法でやってはみましたが、 「SQL Server によって、コンポーネント 'Ad Hoc Distributed Queries' の STATEMENT 'OpenRowset/OpenDatasource' に対するアクセスがブロックされました。このサーバーのセキュリティ構成で、このコンポーネントが OFF に設定されているためです。システム管理者は sp_configure を使用して、'Ad Hoc Distributed Queries' の使用を有効にできます。'Ad Hoc Distributed Queries' を有効にする手順の詳細については、SQL Server オンライン ブックで、'Ad Hoc Distributed Queries' を検索してください」というエラーが出ています(すみません。以前から出ていました)。SQLServer側は既に稼動しているので、設定は変更しない状態で解決できる方法はございますでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問