无法在运行时创建数据库

时间:2016-09-13 15:08:19

标签: c# sql-server

我是通过微软的样本写的,但它不起作用:

public class Database
{
    private bool Create()
    {
        string path = GetPath();
        Debug.WriteLine("Path: " + path);

        try
        {
            string connectionString = string.Format(@"Data Source=(LocalDB)\v11.0;Initial Catalog=master;Integrated Security=True");

            using (var connection = new SqlConnection(connectionString))
            {
                connection.Open();
                SqlCommand cmd = connection.CreateCommand();


                DetachDatabase(DatabaseName);

                cmd.CommandText = string.Format("CREATE DATABASE {0} ON (NAME = N'{0}', FILENAME = '{1}')", DatabaseName, path);
                cmd.ExecuteNonQuery();
            }

            if (File.Exists(path)) return true;
            else return false;
        }
        catch
        {
            throw;
        }
    }

    public static bool DetachDatabase(string dbName)
    {
        try
        {
            string connectionString = string.Format(@"Data Source=(LocalDB)\v11.0;Initial Catalog=master;Integrated Security=True");
            using (var connection = new SqlConnection(connectionString))
            {
                connection.Open();
                SqlCommand cmd = connection.CreateCommand();
                cmd.CommandText = string.Format("exec sp_detach_db '{0}'", dbName);
                cmd.ExecuteNonQuery();

                return true;
            }
        }
        catch
        {
            return false;
        }
    }

    private string GetPath()
    {
        string filename = System.Reflection.Assembly.GetExecutingAssembly().CodeBase;
        return new Uri(Path.GetDirectoryName(filename)).LocalPath + "\\" + DatabaseName + DatabaseType;
    }
}

调用connection.Open()时出错:

  

更多信息:“System.Data.SqlClient.SqlException”   System.Data.dllВызваноисключение:   “System.Data.SqlClient.SqlException”вSK.exe“SK.vshost.exe”(CLR   v4.0.30319:SK.vshost.exe)。 Загружено   “C:\ WINDOWS \ Microsoft.Net \装配\ GAC_MSIL \ System.Transactions.resources \ v4.0_4.0.0.0_ru_b77a5c561934e089 \ System.Transactions.resources.dll”。   Сборкамодулявыполненабезсимволов。 System.Transactions严重:0   :http://msdn.microsoft.com/TraceCodes/System/ActivityTracing/2004/07/Reliability/Exception/UnhandledНеобработанное   исключениеSK.vshost.exeSystem.Data.SqlClient.SqlException,   System.Data,Version = 4.0.0.0,Culture = neutral,   公钥=b77a5c561934e089При   установлениисоединениясSQLServerпроизошлаошибка,связаннаяс   сетьюилисопределеннымэкземпляром。 Серверненайденилинедоступен。   Убедитесь,чтоимяэкземплярауказаноправильноичтонаSQLServer   这是一个很好的选择。 (提供者:SQL网络接口,   错误:50 - 本地数据库Runtime.Невозможносоздать   автоматическийэкземпляр。 Дополнительныесведенияобошибкесм。 в   журналесобытийприложенийWindows。 )   System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity   identity,SqlConnectionString connectionOptions,SqlCredential   凭证,Object providerInfo,String newPassword,SecureString   newSecurePassword,Boolean redirectedUserInstance,SqlConnectionString   userConnectionOptions,SessionData reconnectSessionData,   DbConnectionPool池,String accessToken,Boolean   applyTransientFaultHandling)в   System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions   options,DbConnectionPoolKey poolKey,Object poolGroupProviderInfo,   DbConnectionPool池,DbConnection owningConnection,   DbConnectionOptions userOptions)...

用俄语说the server not found or not available

P.S。我重试了一些我找到的变种,但它并不都是一样的。

1 个答案:

答案 0 :(得分:1)

  

Серверненайденилинедоступен。 Убедитесь,чтоимяэкземплярауказано   правильноичтонаSQLServerразрешеныудаленныесоединения。

这意味着您无法连接到您的SQL Server。你的连接字符串是错误的。