22

Я пытаюсь настроить общий экземпляр SQL Server 2012 LocalDB (RTM, x64) на моем компьютере с Windows 7 x64, и я не могу подключиться к общему экземпляру. Я использую командную строку администратора для всех настроек. Вот как я создаю экземпляр:Почему я не могу подключиться к общему экземпляру SQL Server 2012 LocalDB?

sqllocaldb create MyInstance 

что дает ответ:

LocalDB instance "MyInstance" created with version 11.0. 

До сих пор так хорошо. Теперь я делюсь экземпляр:

sqllocaldb share "MyInstance" "MySharedInstance" 

что приводит:

Private LocalDB instance "MyInstance" shared with the shared name: "MySharedInstance". 

Все еще хорошо выглядеть. На данный момент, я Доходность информации Команды:

.\MySharedInstance 
MyInstance 
v11.0 

Подключения к экземпляру от владельца счетов (который является администратором) с использованием как админа или без администратора командной строки, кажется, работает нормально. Вещи оторвались дорожки, хотя, когда я войти как обычный пользователь (не окна администратора) и попробуйте подключиться:

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. Следующая команда (которая работает для владельца администратора пользователя/экземпляра):

sqllocaldb info ".\MySharedInstance" 

также приводит к ошибке:

Windows API call "FileTimeToSystemTime" returned error code: -2147024809. 

Таким образом, вопрос, почему не мой, не админы пользователя подключаться к мой общий экземпляр? Похоже, что это превзошло все цели общих дел. И что с командой «sqllocaldb info» выдает ошибку при попытке запроса об общем экземпляре?

+0

Вы говорите о не-администратора пользователей с Windows? Итак, вы вышли из системы и вошли в систему как другой пользователь? Или пользователь пытается подключиться с другой машины? –

+0

Забыл и зарегистрировался как пользователь. Мне не нужно подключаться с другой машины. –

+0

Вы уверены, что экземпляр сохраняется после события выхода из системы? Что произойдет, если вы выйдете из системы и войдите в систему как пользователь admin? Я подозреваю, что вы столкнетесь с той же проблемой. –

ответ

24

ДРУГОЙ EDIT

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 (или только с установленными ранее версиями), чтобы полностью изучить это. Но, пожалуйста, дайте мне знать, если прямое обращение к версии 1108 sqlcmd делает трюк.

Я думаю, вы также можете дать указание пользователям изменить свои системные переменные, чтобы первые версии были первыми (что ИМХО должно быть автоматически).

FileTimeToSystemTime был подтвержден как ошибка одного из сотрудников Krzysztof. Таким образом, до сих пор нет исправления, которое я знаю для не-владельцев для подключения через sqllocaldb. Но я показал, что и SSMS, и sqlcmd можно заставить работать, поэтому я надеюсь, что вы приблизитесь к запуску.

EDIT

Вы должны добавлять пользователей несобственников к примеру, например, 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, Level 16, State 1 SQL Server Network Interfaces:

Error Locating Server/Instance Specified [xFFFFFFFF].

Sqlcmd: Error: Microsoft SQL Server Native Client 10.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..

Sqlcmd: Error: Microsoft SQL Server Native Client 10.0 : Login timeout expired.

Хотя я проверить, что экземпляр устанавливается на переменный ток cept удаленных соединений. Итак, есть еще один обруч, который должен пройти sqlcmd.

И что касается sqllocaldb exe, как это следует за любой логикой? Я вижу, что экземпляр существует через info, я получаю сообщение об ошибке, когда пытаюсь остановить его, я получаю сообщение о том, что он [уже] запущен, когда я пытаюсь запустить его, но я не могу подключиться к нему?

enter image description here

Так что, если вам необходимостьsqlcmd доступа, в краткосрочной перспективе я бы вторичные пользователи делают свое дело с SSMS (как только вы предоставили соответствующие разрешения), и мы надеемся, Кшиштоф будет иметь больше информации о другие предметы.


Что касается 4.0.2 обновления от http://connect.microsoft.com/SQLServer/feedback/details/723737/smo-cant-connect-to-localdb-instances:

We made an explicit decision not to include .NET Framework 4.0.2 in LocalDB installer. Installing the .NET Framework update would increase the size of the LocalDB installer and cause a likely reboot. Since LocalDB is built to be independent of the .NET, we didn’t think we should take this cost for every LocalDB installation. Future .NET versions (including .NET 4.5, now in CTP) will support LocalDB out of the box. Some developers may also want to opt in for ODBC, PHP Driver/PDO, and probably JDBC in the future. Those developers will not be interested in updating .NET.

+3

Это решило мою проблему! – Andy

+0

yep мне тоже – Gomes

-4

Проблема заключается в том что вам нужно процитировать имя БД:

sqlcmd -S "(localdb)\.\MySharedInstance" 
+1

Я не думаю, что это ответ; Мне не нужно было указывать, как только я использовал правильную версию sqlcmd (тот, который поставляется с Sql Server 2012). – Andy

6

Как предложил оригинальный пост, это WASN как прямой, как ожидалось, но в конечном итоге я смог подключиться через именованный канал.

Connecting to a LocalDB instance via named pipe

+0

Странно, у меня была такая же проблема с экземпляром MSSQLLocalDB по умолчанию и подключением через обработанное имя экземпляра экземпляра (после того, как я удалил ранее существующие файлы MDF и LDF базы данных в папке C: \ Users \ \). –

1

ЭТОТ ОТВЕТ НЕСЕТ УДАЛЕНИЕ INSTANCE ОДОБРЕНО.
т. Е. Все ваши данные исчезнут, и все в порядке.

У меня была такая же проблема после обновления моего 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