2017-03-16 1 views
2

J'utilise SQLCMD (Invite de commande SQL) pour exporter les données au format CSV, mais il jette un problème lié contrôle d'accès:SQLCMD pour exporter les données au format CSV

Échec de la connexion pour l'utilisateur 'MEA \ UserName. ... Impossible d'ouvrir la base de données "C: \ ABC.mdf" Mais User (UserName) a déjà fourni un contrôle d'accès complet pour cette base de données.

Ci-dessous mon code:

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() 

Répondre

0

Vous devez spécifier le nom de la base de données non chemin MDF.

sqlcmd -S "YOURSERVER\YOURINSTANCE" -d YOURDATABASENAME 

Même si vous utilisez LocalDb vous ne pouvez pas accéder directement au fichier MDF, mais vous devez utiliser ce SINTAX:

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