2017-03-16 67 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