2017-03-16 61 views
2

我使用SQLCMD(SQL命令提示符)將數據導出爲CSV,但它拋出一個訪問控制相關的問題:SQLCMD將數據導出到CSV

用戶登錄失敗「MEA \用戶名」。 ...無法打開數據庫「C:\ ABC.mdf」但User(用戶名)已經爲此數據庫提供了完全訪問控制。

下面是我的代碼:

Dim ServerName As String = System.Net.Dns.GetHostName() 

Dim DoubleQuote As String = Chr(34) 

Dim DatabaseName As String = DoubleQuote & "C:\Giv 15Mar2017\WindowsApplication1_Givaudan_new\WindowsApplication1_Givaudan_new\WindowsApplication1\Database\ABC.mdf" & DoubleQuote 

Dim QueryToExceute As String = DoubleQuote & "set nocount on;Select * from EKPO" & DoubleQuote 

Dim ExportFileName As String = "C:\Data\TableData.csv" 

Dim QueryToExceute1 As String = DoubleQuote & "set nocount on;Select * from EKPO" & DoubleQuote 

Dim ExportFileName1 As String = "C:\Data\TableDataCorrection.csv" 

Dim Process = New Process() 
Process.StartInfo.UseShellExecute = False 
Process.StartInfo.RedirectStandardOutput = True 
Process.StartInfo.RedirectStandardError = True 
Process.StartInfo.CreateNoWindow = True 
Process.StartInfo.FileName = "SQLCMD.EXE" 

Process.StartInfo.Arguments = "-S " & ServerName & " -d " & DatabaseName & " -E -Q " & 
QueryToExceute1 & " -o " & ExportFileName & " -s""|"" -W" 

Process.StartInfo.WorkingDirectory = "C:\Data" 

Process.Start() 
Process.WaitForExit() 

回答

0

您必須指定數據庫名稱不MDF路徑。

sqlcmd -S "YOURSERVER\YOURINSTANCE" -d YOURDATABASENAME 

即使你使用LocalDb你不能直接訪問到MDF文件,但你必須使用這個sintax:

sqlcmd -S "(localdb)\MSSQLLocalDB" -d YOURDATABASENAME