none
Помогите, пожалуйста. Не могу подключиться к SQL серверу на хостинге RRS feed

  • Вопрос

  • Извините, может быть на этот вопрос уже отвечали. Все горит по времени. Не успеваю просмотреть форум.

    Используется ASP.Net 3.5

    На локальном компьютере подключение к серверу работает (SQL express 2005) . База в папке AppData.

    На хостинге (виртуальный сервер) установил (SQL express 2005). Установил обновления. Перенес сайт. Изменил конфигурационный файл (строка подключения берется из конфигурационного файла).  Сделал страничку с протоколированием процедуры. Выяснил, что не срабатывает подключение.

    Использовал разные строки подключения. Сейчас стоит

    Data Source=.\SQLEXPRESS;Integrated Security=SSPI;

    AttachDBFileName=|DataDirectory|ShopR.mdf;User Instance=True;

    Пробовал вместо |DataDirectory| указывать явно путь к папке AppData.

    Результат один и тот же.

    При перехвате ошибочного состояния выдается длинная диагностика ошибки

    System.Data.SqlClient.SqlException: Не удалось прикрепить базу данных, которой автоматически было присвоено имя, к файлу
    C:\inetpub\vhosts\ShopR\App_Data\ShopR.mdf.
    База данных с таким именем уже существует, указанный файл нельзя открыть, или он находится на общем ресурсе UNC. в
    System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception,
    Boolean breakConnection)
    в
    System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject
    stateObj)
    в
    System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand
    cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler,
    TdsParserStateObject stateObj)
    в System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean
    enlistOK)
    в System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject) в System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String
    host, String newPassword, Boolean redirectedUserInstance, SqlConnection
    owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
    в
    System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection
    owningObject, SqlConnectionString connectionOptions, String newPassword,
    Boolean redirectedUserInstance)
    в
    System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity
    identity, SqlConnectionString connectionOptions, Object providerInfo, String
    newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
    в
    System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions
    options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection
    owningConnection)
    в System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection
    owningConnection, DbConnectionPool pool, DbConnectionOptions options)
    в
    System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection
    owningObject)
    в System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection
    owningObject)
    в System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection
    owningObject)
    в System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection
    owningConnection)
    в System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection
    outerConnection, DbConnectionFactory connectionFactory)
    в
    System.Data.SqlClient.SqlConnection.Open()
    в _Default.Page_Load(Object sender, EventArgs e) в
    c:\inetpub\vhosts\shopr\Default1.aspx.cs:
    строка 42

    подскажите, пожалуйста. за что зацепиться

    10 сентября 2012 г. 15:04

Ответы

  • Попробуйте так

    Data Source=.\SQLEXPRESS;Database=mydatabase;Integrated Security=SSPI;AttachDBFileName=|DataDirectory|ShopR.mdf;User Instance=True;

    И ещё можете включить имперсонацию в конфиге

    <identity impersonate="true" />

    • Помечено в качестве ответа Miklv 11 сентября 2012 г. 1:34
    10 сентября 2012 г. 19:02
    Модератор
  • Большое спасибо! Заработало!

    Только уже зациклился. долго запускал так как написано.

    надо было вместо  Database=mydatabase

    писать Database=ShopR

    и в  версии 3.5 ASP.Net у меня не работает

    =|DataDirectory|

    пришлось писать полный путь.

    Можно жить дальше


    • Изменено Miklv 11 сентября 2012 г. 1:36
    • Помечено в качестве ответа Abolmasov Dmitry 12 сентября 2012 г. 6:46
    11 сентября 2012 г. 1:34
  • Прошлое сообщение писал позно ночью(рано утром), поэтому был краток. С учетом последнего замечания о полезности уточняю детали. 

    Решающее в получении положительного результата было предложенное изменение строки запроса. Но если бы у меня не было тестовой страницы с протоколированием доступа, то я бы не дошел бы до полезного результата. По тестовой странице я увидел, что соединения нет, но диагностика ошибки изменилась. Система ругалась, что у меня неверный файл логов. Я перенесил с локального компьютера два файла: саму базу(mdf-саму базу картинка с табличкой) и логи(картинка с текстовой страницей). После удаления логов все заработало. Наверное, переносить надо один mdf файл.

    Организация протоколирования была тривиальной. выложил на форму несколько Label и по ходу заносил в них информацию. Диагностика ошибки получал при обработке перехвата

    try
            {


                using (SqlConnection conn = new SqlConnection(conStr))
                {
                    conn.Open();
                   ........
                }
            }
            catch (SqlException ex)
            {

                string strExp = ex.ToString();
                LabelEr.Text = strExp;
            }

    }

    может это будет кому-то полезно

    • Помечено в качестве ответа Abolmasov Dmitry 12 сентября 2012 г. 9:32
    12 сентября 2012 г. 9:18

Все ответы

  • Попробуйте так

    Data Source=.\SQLEXPRESS;Database=mydatabase;Integrated Security=SSPI;AttachDBFileName=|DataDirectory|ShopR.mdf;User Instance=True;

    И ещё можете включить имперсонацию в конфиге

    <identity impersonate="true" />

    • Помечено в качестве ответа Miklv 11 сентября 2012 г. 1:34
    10 сентября 2012 г. 19:02
    Модератор
  • Большое спасибо! Заработало!

    Только уже зациклился. долго запускал так как написано.

    надо было вместо  Database=mydatabase

    писать Database=ShopR

    и в  версии 3.5 ASP.Net у меня не работает

    =|DataDirectory|

    пришлось писать полный путь.

    Можно жить дальше


    • Изменено Miklv 11 сентября 2012 г. 1:36
    • Помечено в качестве ответа Abolmasov Dmitry 12 сентября 2012 г. 6:46
    11 сентября 2012 г. 1:34
  • Спасибо за дополнение решение, оно будет полезным тем, кто столкнется с подобным.

    Для связи [mail]

    12 сентября 2012 г. 6:46
  • Прошлое сообщение писал позно ночью(рано утром), поэтому был краток. С учетом последнего замечания о полезности уточняю детали. 

    Решающее в получении положительного результата было предложенное изменение строки запроса. Но если бы у меня не было тестовой страницы с протоколированием доступа, то я бы не дошел бы до полезного результата. По тестовой странице я увидел, что соединения нет, но диагностика ошибки изменилась. Система ругалась, что у меня неверный файл логов. Я перенесил с локального компьютера два файла: саму базу(mdf-саму базу картинка с табличкой) и логи(картинка с текстовой страницей). После удаления логов все заработало. Наверное, переносить надо один mdf файл.

    Организация протоколирования была тривиальной. выложил на форму несколько Label и по ходу заносил в них информацию. Диагностика ошибки получал при обработке перехвата

    try
            {


                using (SqlConnection conn = new SqlConnection(conStr))
                {
                    conn.Open();
                   ........
                }
            }
            catch (SqlException ex)
            {

                string strExp = ex.ToString();
                LabelEr.Text = strExp;
            }

    }

    может это будет кому-то полезно

    • Помечено в качестве ответа Abolmasov Dmitry 12 сентября 2012 г. 9:32
    12 сентября 2012 г. 9:18