Dalam C#, melaksanakan fail skrip .SQL memerlukan pertimbangan khusus. Soalan ini membincangkan kesukaran menjalankan fail sedemikian, yang mungkin mengandungi penyataan bersegmen yang merangkumi berbilang baris.
Cabaran dan Penyelesaian
Percubaan untuk melaksanakan skrip menggunakan ExecuteNonQuery ODP.NET terbukti tidak berkesan. Melahirkan proses untuk memanggil sqlplus mempunyai masalah dengan gantung dan pengalihan semula output.
Penyelesaian menggunakan Microsoft SQL Server Management Objects (SMO)
Penyelesaian yang dibentangkan di sini memanfaatkan SMO, API kod terurus untuk mengurus dan mengkonfigurasi SQL Server. Berikut ialah coretan kod yang menunjukkan pendekatan ini:
<code class="language-csharp">using Microsoft.SqlServer.Management.Smo; using Microsoft.SqlServer.Management.Common; using System.IO; using System.Data.SqlClient; public partial class ExcuteScript : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string sqlConnectionString = @"Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=ccwebgrity;Data Source=SURAJIT\SQLEXPRESS"; string script = File.ReadAllText(@"E:\Project Docs\MX462-PD\MX756_ModMappings1.sql"); SqlConnection conn = new SqlConnection(sqlConnectionString); Server server = new Server(new ServerConnection(conn)); server.ConnectionContext.ExecuteNonQuery(script); } }</code>
Dalam kaedah ini:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Fail Skrip SQL Berbilang Baris dengan Cekap dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!