sql >> Databasteknik >  >> RDS >> Sqlserver

Hur kan jag köra en .sql från C#?

using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;

Du borde inte behöva SMO för att utföra frågor. Försök att använda SqlCommand-objektet istället. Ta bort dessa med hjälp av uttalanden. Använd den här koden för att köra frågan:

 SqlConnection conn = new SqlConnection(sqlConnectionString);
 SqlCommand cmd = new SqlCommand(script, conn);
 cmd.ExecuteNonQuery();

Ta också bort projekthänvisningen till SMO. Obs:du vill rensa upp resurser ordentligt.

Uppdatering:

ADO.NET-biblioteken stöder inte nyckelordet 'GO' . Det verkar som att dina alternativ är:

  1. Parse skriptet. Ta bort "GO"-nyckelorden och dela upp skriptet i separata partier. Kör varje batch som sin egen SqlCommand.
  2. Skicka skriptet till SQLCMD i skalet (David Andres svar).
  3. Använd SMO som koden från blogginlägget.

I det här fallet tror jag faktiskt att SMO kan vara det bästa alternativet, men du måste spåra varför dll-filen inte hittades.



  1. SQL Group BY använder strängar i nya kolumner

  2. FEL:nollvärdet i kolumn-id bryter mot noll-begränsningen

  3. Konstigt beteende med mysql_affected_rows() i PHP

  4. SQLite JSON_ARRAY()