簡體   English   中英

將SQL Server數據庫轉換為緊湊型:運行Executesql命令時出錯

[英]Convert SQL Server database to compact: Error on running Executesql command

我正在使用下面的代碼將SQL Server數據庫轉換為緊湊型數據庫。 如果我使用Visual Studio 2010構建應用程序時它工作正常,因為它的目標是.net 4.0。但是如果我在Visual Studio中構建或運行它(我可以將其定位到.net 3.5或2),它將無法正常工作。 ExecuteSql(filename)無法正常工作。 但是,如果我訪問文件,則可以看到生成的腳本。 所以我需要在SSMS中手動運行腳本。 所以我需要替代方法來運行生成的腳本,該腳本甚至可以在.net 2或3.5中運行。 所以請幫我。

using ErikEJ.SqlCeScripting;
using System;
using System.IO;
using System.Data.SqlServerCe;

class Program
{
    static void Main(string[] args)
    {
        try
        {

            //--------Convert sql server express to compact db---------------------
        //http://erikej.blogspot.dk/2013/09/sql-server-compact-code-snippet-19.html
            using (IRepository serverRepository = new ServerDBRepository("Data Source=PCNAME\\SQLEXPRESS,25111;Initial Catalog=mydb;Persist Security Info=True;User ID=admin;password =mypassword"))
            {
                string fileName = Path.GetTempFileName();
                var generator = new Generator(serverRepository, fileName);
                generator.ScriptDatabaseToFile(Scope.SchemaData);

                var helper = new SqlCeHelper();
                var sqlCeConnectionString = @"Data Source=C:\Northwind.sdf";
                helper.CreateDatabase(sqlCeConnectionString);

                using (IRepository sqlCeRepository = new DBRepository(sqlCeConnectionString))
                {
                    sqlCeRepository.ExecuteSql(fileName);
                }
            }

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
        }
        Console.ReadKey();
    }
}

采用:

Process.Start("sqlcecmd.exe" "-d """Data Source=C:\\test2.sdf""" -i c:\input.txt");

並在您的應用中包含sqlcecmd.exe(或sqlcecmd40.exe)作為內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM