2017-08-23 18 views
0

次のコードを使用して、SQL ServerテーブルをAccessファイルにコピーします。ローカルSQL Server Expressデータベース(ローカルエクスプレスエリアでSSMSを使用してDBを作成)を選択しても問題はありませんが、ローカルファイルに問題があります。このエラーが表示さC#ローカルSQL ServerファイルからAccess .mdbにデータをコピー

Database='3b26bee4-2cdb-4d39-8400-7abb3debe802' 

Database='3b26bee4-2cdb-4d39-8400-7abb3debe802.mdf' 

Database='c:\user\temp\uniqueFolder\3b26bee4-2cdb-4d39-8400-7abb3debe802.mdf' 

のVisual Studio:

追加

//Error When change to file address or file 
OleDbCommand AccessCommand = new OleDbCommand(
    @"SELECT * INTO "+desName+" FROM ["+sourceName+ @"] IN '' [ODBC;Driver= 
    {ODBC Driver 11 for SQL Server};Server="[email protected]"(localdb)\MSSQLLocalDB; 
    Database='3b26bee4-2cdb-4d39-8400-7abb3debe802';Trusted_Connection=yes];", AccessConn); 

私はコードの下にそれぞれのデータベースを変更:

//Using ACE.OLEDB : 
OleDbConnection AccessConn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+Setting.UniqeFolderPath+"\\"+Setting.UniqeId+".mdb"); 

AccessConn.Open(); 

//New table, using SELECT INTO 
OleDbCommand AccessCommand = new OleDbCommand(
      @"SELECT * INTO "+desName+" FROM ["+sourceName+ @"] IN '' 
      [ODBC;Driver={ODBC Driver 11 for SQL Server};Server="[email protected]"(localdb)\MSSQLLocalDB; 
      Database='LocalDB';Trusted_Connection=yes];", AccessConn); 

AccessCommand.ExecuteNonQuery(); 
AccessConn.Close(); 

問題は、私は、データベースを変更したときに起こります情報:ODBC - '{ODBC Driver 11 for'への接続SQL Server}(localdb)\ MSSQLLocalDB 'が失敗しました。

SSMSで作成したローカルエクスプレスDBに変更すると、テーブルコピーからアクセスファイルに変更されます。

OleDbCommand AccessCommand = new OleDbCommand(
    @"SELECT * INTO "+desName+" FROM ["+sourceName+ @"] IN '' [ODBC;Driver= 
    {ODBC Driver 11 for SQL Server};Server="[email protected]"(localdb)\MSSQLLocalDB; 
    Database='LocalDB';Trusted_Connection=yes];", AccessConn); 

問題:.mdb flieにアクセスするためのSQL Serverのローカルファイルからデータをコピーする方法?

注:私は、SQL Server 2016のExpressを使用して(localdb)\MSSQLLocalDB

+0

SQL Server Management Studioには、Accessを含むさまざまな形式のデータをエクスポートできるデータのエクスポートウィザードが既に用意されています。あとでパッケージを保存することもできます –

+0

なぜ* ODBC *を使用していますか?なぜネイティブのSqlConnectionですか? –

+0

@PanagiotisKanavos [OK]を知っていますが、プログラムでデータを 'Export'したいです。 –

答えて

0

でデータベースに接続し、あなたが一緒にあなたの接続文字列を入れている方法が奇数である、あなたが上書きされますコマンドオブジェクトの接続文字列を、含めましたOleDbConnectionのプロパティ

"[ODBC;ドライバ= {ODBCドライバ11 SQL Serverの用}; サーバー =" + @ "localdb)\ MSSQLLocalDB;データベース= 'LocalDB'; Trusted_Connection =はい]"

取得コマンドからの接続文字列要素を取り除き、OleDbConnectionオブジェクトにのみ接続文字列を指定します。

接続文字列の詳細については、https://www.connectionstrings.com/をご覧ください。

+0

接続文字列とSQLテーブルからアクセスするためのデータをコピーすることを提案できますか? –

+0

500000のレコードをAccessにコピーするにはどのくらいの時間が必要ですか?私はそれが私の解決策ではないと思う。 –

+0

ネイティブクライアントの場合、https://docs.microsoft.com/en-us/sql/relational-databases/native-client/applications/using-ado-with-sql-server-native-clientを参照してください。あなたはなぜその(多くの)データをAccessにコピーしていますか?あなたは何を達成しようとしていますか? –

関連する問題