Как прикрепить базу данных ms sql, используя относительный путь? - PullRequest
0 голосов
/ 02 апреля 2020

Извините, если об этом уже спрашивали! Я могу прикрепить базу данных ms sql по нажатию кнопки, используя этот код:

using (SqlConnection connection = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=;Integrated Security=True; MultipleActiveResultSets = true")) 
            {
                using (SqlCommand cmd = new SqlCommand("", connection))
                {
                    using (SqlCommand cmd1 = new SqlCommand("", connection))
                    {
                        try
                        {
                            cmd.CommandText = "CREATE DATABASE [TRTF_TagLogging] ON (FILENAME ='C:\\Release\\App_Data\\TRTF_TagLogging.mdf'),(FILENAME ='C:\\Release\\App_Data\\App_Data\\TRTF_TagLogging_log.ldf') FOR ATTACH";

                            cmd1.CommandText = "if(exists(select * from sys.databases where name = 'TRTF_TagLogging')) PRINT 'DB attached'";

                            connection.Open();
                            cmd.ExecuteNonQuery();
                            cmd1.ExecuteNonQuery();
                            //the rest of the code

Я хотел бы иметь возможность присоединить БД, используя относительный путь. Это означает, что вместо использования 'C: \ Release \ App_Data \ TRTF_TagLogging.mdf' я должен использовать '. \ App_Data \ TRTF_TagLogging.mdf'. Используя '. \ App_Data \ TRTF_TagLogging.mdf', я получаю 'System.Data.SqlClient.SqlException (0x80131904): A file activation error occurred. The physical file name '.\App_Data\TRTF_TagLogging.mdf' may be incorrect.'

1 Ответ

1 голос
/ 02 апреля 2020

Если кому-то еще интересно, мне удалось решить это так:

string path = Directory.GetCurrentDirectory();
cmd.CommandText = @"CREATE DATABASE [TRTF_TagLogging] ON (FILENAME ='" + path + @"\App_Data\TRTF_TagLogging.mdf'),(FILENAME ='" + path + @"\App_Data\TRTF_TagLogging_log.ldf') FOR ATTACH";

Directory.GetCurrentDirectory() возвращает, в моем случае, C: \ Release.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...