using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.Common;
using System.Windows.Forms;
namespace Tracing
{
   static class Program
   {
      [STAThread]
      static void Main()
      {
         SqlConnectionStringBuilder cnSettings;
         SqlConnection cn;
         SqlDataAdapter da;
         SqlCommandBuilder cmdBld;
         DataSet ds;
         cnSettings = new SqlConnectionStringBuilder(
           @"Data Source=.\SQLEXPRESS;"
           + "AttachDbFilename=|DataDirectory|NORTHWND.MDF;"
           + "Integrated Security=True;User Instance=True");
            Console.WriteLine(cnSettings.ConnectionString);
             Console.ReadKey();
             cn = new SqlConnection(cnSettings.ConnectionString);
             try
             {
                 da = new SqlDataAdapter("Select * from Products", cn);
                 cmdBld = new SqlCommandBuilder(da);
                 ds = new DataSet();
                 da.Fill(ds, "Products");
                 foreach (DataRow dr in ds.Tables["Products"].Rows)
                 {
                     dr["UnitPrice"] = (decimal)dr["UnitPrice"] * (decimal)1.1;
                 }
                 da.Update(ds, "Products");
             }
             catch (DbException e)
             {
                 MessageBox.Show(e.Message);
             }
      }
   }
}
尝试为文件 .mdf 附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中。
后来找到解决方法,复制文件到该目录。
问题2:无法启动Logman.exe跟踪
输入命令:
logman start mytrace -o out.etl -pf ProviderLists.txt
报错:2021 集合“Mytrace”没有启动
"ADONETDIAG.ETW" 0x2 0x0 ADONETDIAG.ETW
{914ABDE2-171E-C600-3348-C514171DE148} 0x2 0x0 System.Data.1
"System.Data.SNI.1" Ox2 0x0 System.Data.SNI.1
"SQLNCLI.1" 0x2 0x0 SQLNCLI.1
问题也得到解决:
在性能管理窗口中定义跟踪事件,然后将其与非系统事件ADONETDIAG.ETW联系起来,然后启动方式为手动,相关命令为tracing.exe,实验即可成功。