Почему я не могу подключиться к общему экземпляру SQL Server 2012 LocalDB?
Я пытаюсь настроить общий экземпляр SQL Server 2012 LocalDB (RTM, x64) на моей машине с Windows 7 x64, и я не могу подключиться к общему экземпляру. Я использую командную строку администратора для всех настроек. Вот как я создаю экземпляр:
sqllocaldb create MyInstance
Что дает ответ:
LocalDB instance "MyInstance" created with version 11.0.
Все идет нормально. Теперь я передаю экземпляр:
- Может ли SQL Server Express LocalDB подключаться удаленно?
- какой легкий тип SQL Server я мог бы использовать на своей машине Dev для проекта C # VS2010?
- Могу ли я установить 2008 SQLExpress вместе с 2005 SQLExpress?
- Является ли SQL Server 2005 Express достаточно хорошим для разработки
- SQL Server: изменить столбец до нуля в очень большой таблице
sqllocaldb share "MyInstance" "MySharedInstance"
Результат:
Private LocalDB instance "MyInstance" shared with the shared name: "MySharedInstance".
Все еще выглядит хорошо. На этом этапе команда info дает:
.\MySharedInstance MyInstance v11.0
Подключение к экземпляру из учетной записи владельца (которая является администратором) с использованием командной строки admin или non-admin работает нормально. Все происходит со следов, хотя, когда я вхожу в систему как обычный пользователь (а не администратор Windows) и пытаюсь подключиться:
sqlcmd -S (localdb)\.\MySharedInstance
результаты:
Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : Named Pipes Provider: Could not open a connection to SQL Server [2]. . Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : Login timeout expired. Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..
Увеличение таймаута входа с помощью переключателя «-l» не помогает. Я могу подключиться к экземпляру по умолчанию v11.0, который не является общим. Команда info для пользователя, не являющегося администратором, дает то же самое, что и выше, кроме как «MyInstance», поскольку он является именованным экземпляром, принадлежащим пользователю admin. Следующая команда (которая работает для владельца / владельца admin):
sqllocaldb info ".\MySharedInstance"
также приводит к ошибке:
Windows API call "FileTimeToSystemTime" returned error code: -2147024809.
Поэтому возникает вопрос, почему мой пользователь, не являющийся администратором, не может подключиться к моему общему экземпляру? Похоже, что это превзошло все цели общих дел. И что с командой «sqllocaldb info» выдает ошибку при попытке запроса об общем экземпляре?
- SQL Express для производства?
- Идентификатор ожидания сервера SQL-сервера ODBC истек
- Как добавить пользователей в SQL Server 2008 Managment Studio
- Как я могу присвоить номер каждой строке в таблице, представляющей номер записи?
- Не удается подключиться к локальному SQL Server Express 2008 R2
- Как сохранить SQL-сервер в другом проекте из пользовательского интерфейса?
- Как запускать хранимую процедуру каждый день в SQL Server Express Edition?
- sp_dropserver и sp_addserver не работают
ДРУГОЕ ИЗМЕНЕНИЕ
Cory, если у вас установлены предыдущие версии SQL Server (например, 2008), то есть версия sqlcmd
вы используете. Чтобы подключиться к LocalDb, вам необходимо использовать SQL Server 2012 версию sqlcmd
. Поэтому ваши инструкции для ваших пользователей должны гарантировать, что они используют версию SQL Server 2012, запустив:
C:\Program Files\Microsoft SQL Server\110\Tools\Binn\sqlcmd -S "(localdb)\.\InstanceName"
Это сработало для меня. Я не проверял, доступен ли этот путь и версия sqlcmd
для пользователей, которые установили sqllocaldb.msi. Извините, но у меня нет готовых машин без установки SQL Server 2012 (или только с установленными ранее версиями), чтобы полностью изучить это. Но, пожалуйста, дайте мне знать, если явное обращение к 110-й версии sqlcmd
делает трюк.
Я думаю, вы также можете дать указание пользователям изменить свои системные переменные, чтобы первые версии были первыми (что ИМХО должно быть в этом случае автоматически).
FileTimeToSystemTime
был подтвержден как ошибка одного из сотрудников Krzysztof. Таким образом, до сих пор нет исправления, которое я знаю для не-владельцев для подключения через sqllocaldb
. Но я показал, что sqlcmd
и sqlcmd
могут работать, поэтому я надеюсь, что вы приблизитесь к запуску.
РЕДАКТИРОВАТЬ
Вам нужно добавить в экземпляр любых пользователей, не являющихся владельцами, например CREATE LOGIN [MyDomain\OtherUser] FROM WINDOWS;
и любые соответствующие разрешения. В моей тестовой логике произошел сбой и возникла ошибка сообщения об ошибке (сообщение об ошибке «FileTimeToSystemTime» является ошибкой). Вы также должны использовать GRANT CONNECT
. Как только вы это сделаете, вы сможете подключиться от второго пользователя с помощью Management Studio с этим соединением (единственное, что я пробовал):
(localdb)\.\MySharedInstance
Но из sqlcmd
я все равно получаю сообщение об ошибке независимо от того, как я пытаюсь подключиться:
sqlcmd -S "(localdb)\.\MySharedInstance" sqlcmd -S ".\MySharedInstance" sqlcmd -S "(localdb)\MySharedInstance" sqlcmd -S "GREENHORNET\MySharedInstance" sqlcmd -S ".\LOCALDB#SH04FF8A" sqlcmd -S "GREENHORNET\LOCALDB#SH04FF8A"
Весь доход:
HResult 0xFFFFFFFF, уровень 16, состояние 1 Сетевые интерфейсы SQL Server:
Ошибка определения местонахождения сервера / экземпляра [xFFFFFFFF].
Sqlcmd: ошибка: собственный клиент Microsoft SQL Server 10.0: при установлении соединения с SQL Server произошла связанная с сетью или конкретная ошибка экземпляра. Сервер не найден или недоступен. Проверьте правильность имени экземпляра и если SQL Server настроен на разрешение удаленных подключений. Дополнительные сведения см. В электронной документации по SQL Server ..
Sqlcmd: ошибка: собственный клиент Microsoft SQL Server 10.0: время ожидания входа истекло.
Хотя я подтвердил, что экземпляр настроен на прием удаленных подключений. Итак, есть еще один обруч, который должен пройти sqlcmd
.
А что касается sqllocaldb
exe, как это следует за любой логикой? Я могу видеть, что экземпляр есть через info
, я получаю сообщение об ошибке, когда пытаюсь остановить его, я получаю сообщение о том, что он [уже] запущен, когда я пытаюсь запустить его, но я не могу подключиться к нему?
Поэтому, если вам не нужен доступ к sqlcmd
, в краткосрочной перспективе я бы sqlcmd
, чтобы вторичные пользователи делали свою работу с SSMS (как только вы предоставили соответствующие разрешения), и, надеюсь, у Krzysztof будет больше информации о других элементах.
Что касается обновления 4.0.2, от http://connect.microsoft.com/SQLServer/feedback/details/723737/smo-cant-connect-to-localdb-instances :
Мы приняли явное решение не включать .NET Framework 4.0.2 в установщик LocalDB. Установка обновления .NET Framework увеличит размер установщика LocalDB и вызовет вероятную перезагрузку. Поскольку LocalDB построен независимо от .NET, мы не думали, что мы должны брать эту стоимость за каждую установку LocalDB. Будущие версии .NET (включая .NET 4.5, теперь в CTP) будут поддерживать LocalDB из коробки. Некоторые разработчики также могут захотеть выбрать ODBC, PHP Driver / PDO и, возможно, JDBC в будущем. Эти разработчики не будут заинтересованы в обновлении .NET.
Как было предложено в оригинальном посте, это было не так прямо, как ожидалось, но в конечном итоге я смог подключиться через именованный канал.
ЭТО ОТВЕТ ПРЕДУПРЕЖДЕНИЕ УДАЛЕНИЕ ИНСТАНЦИИ ОК.
т.е.: все ваши данные исчезнут, и все в порядке.
У меня была такая же проблема после обновления моего SSMS.
sqllocaldb i .\MyCustomInstance sqllocaldb d LocalDb instance ".\MyCustomInstance" does not exist! sqllocaldb i .\MyCustomInstance Windows API call "FileTimeToSystemTime" returned error code: -2147024809.
Чтобы избавиться от оскорбительного экземпляра, мне пришлось создать еще один MyCustomInstance
который, я думаю, перезапишет то, что уже существует, и теперь вы можете удалить его
sqllocaldb c MyCustomInstance LocalDB instance "MyCustomInstance" created with version 11.0. sqllocaldb d .\MyCustomInstance LocalDB instance ".\Octopus" deleted.
Затем запустите экземпляр и поделитесь им. Сначала вы начинаете экземпляр.
sqllocaldb s MyCustomInstance LocalDB instance "MyCustomInstance" started. sqllocaldb h MyCustomInstance MyCustomInstance Private LocalDB instance "MyCustomInstance" shared with the shared name: "MyCustomInstance".
Теперь, когда вам нужно подключиться, вы связываетесь с (localdb)\.\MyCustomInstance
Проблема в том, что вам нужно указать имя db:
sqlcmd -S "(localdb)\.\MySharedInstance"