24.02.2005, 19:34 | #1 |
Участник
|
Подключение базы данных
Подключаю в SQL Server Enterprise Manager базу данных Axapta (файлы .mdf, .ldf), скопированную с сервера, на своем лэптопе локально. Версии Axapta, MS SQL и их сервис-паков одинаковые.
При этом когда пытаюсь запустить Axapta, выдается ошибка: Invalid object name `SQLSYSTEMVARIABLES`. В чем здесь проблема? |
|
24.02.2005, 19:55 | #2 |
Участник
|
Лечится запуском процедуры sp_change_users_login 'auto_fix','bmssa' от dbo в подключенной БД, где bmssa - это владелец таблиц аксапты и логин в новой базе. Рецепт работает при условии что такой пользователь есть и в сервере SQL, и в подключаемой БД.
Смысл в том, что чужая база не может правильно соотнести пользователя БД и пользователя сервера SQL. Более подробно есть инструкция как на этом форуме, так и на сайте www.mazzy.ru |
|
24.02.2005, 20:17 | #3 |
Участник
|
Я попробовала: открыла SQL Query Analyzer, выбрала базу данных из списка и запустила запрос: sp_change_users_login 'auto_fix','bmssa' .
Условия: такой пользователь (bmssa) есть и в сервере SQL, и в подключаемой БД - выполняются. Однако, ошибка при запуске остается. Может, я как-то неправильно запрос запускала? |
|
24.02.2005, 20:24 | #4 |
Участник
|
Проще стукнуться в аську или MSN.
Так мы будем долго переписываться. |
|
24.02.2005, 20:26 | #5 |
Участник
|
ваш bmssa входит в группу system administrator на СКЛ?
если да, владелец у таблиц прописывается как dbo и Аксапта ведет себя по-другому. не стоит включать обычного пользователя в эту группу. Ни с какой точки зрения. Уберите группу, пересоздайте базу, восстановите. Далее действуйте по инструкции http://axapta.mazzy.ru/hints/sqlsystemvariables/ |
|
24.02.2005, 21:15 | #6 |
Участник
|
Михаил, у меня нет ICQ или MSN - запрещен к использованию на работе.
Mazzy, а что такое СКЛ? Login Name для bmssa инициализировался в SQL Server Enterprise Manager после запуска запроса. Но при этом с запуском Axapta та же проблема осталась. |
|
24.02.2005, 21:24 | #7 |
Участник
|
Кстати, смотрю свойства SQL server login-а bmssa - на странице Database Access для подкоюченной базы User установлен dbo, в то время как для остальных баз Axapta пользователь - bmssa.
Может в этом причина? |
|
24.02.2005, 21:24 | #8 |
Участник
|
СКЛ = SQL
|
|
24.02.2005, 21:27 | #9 |
Участник
|
Mazzy, да, bmssa входит в группу system administrator на СКЛ, я проверила.
|
|
24.02.2005, 21:32 | #10 |
Участник
|
Цитата:
Изначально опубликовано OliaM
Михаил, у меня нет ICQ или MSN - запрещен к использованию на работе. Цитата:
Mazzy, а что такое СКЛ?
Цитата:
Login Name для bmssa инициализировался в SQL Server Enterprise Manager после запуска запроса. Но при этом с запуском Axapta та же проблема осталась.
...... Кстати, смотрю свойства SQL server login-а bmssa - на странице Database Access для подкоюченной базы User установлен dbo, в то время как для остальных баз Axapta пользователь - bmssa. Может в этом причина? |
|
24.02.2005, 21:34 | #11 |
Участник
|
Еще у меня на SQL сервере аутентификация Windows. На работающих базах данных у dbo в колонке Login Name: org\oliam (мой Windows login), а в подключенной базе для пользователя dbo в колонке Login Name: bmssa почему-то. Может причина здесь?
|
|
24.02.2005, 21:59 | #12 |
Участник
|
Цитата:
Такого не бывает. Точнее, нет такого запрета, который нельзя было бы обойти. Мне такие запреты как то никогда не мешали...
Цитата:
Похоже, при подключении БД к серверу Вы сделали ее владельцем bmssa, что делать не стоило. Отберите все серверные роли от bmssa, отключите базу и подключите заново, указав в качестве владельца, например, пользователя sa, потом опять запустите скрипт.
Но все равно при запуске Axapta - тот же геморрой, кошмар. |
|
25.02.2005, 03:33 | #13 |
Участник
|
Вот какое отличие (между подключенной базой и рабочими базами Axapta) я нашла:
В SQL Server Enterprise Manager не получается отключить bmssa (логин) от подключенной базы. Выдается ошибка: The user owns objects in the database and cannot be dropped. Для обычных работающих баз Axapta логин bmssa отключается без проблем. Может, в этом дело? |
|
25.02.2005, 08:30 | #14 |
Участник
|
Похоже, Вы НЕ сделали того, что я сказал. Кто является владельцем базы данных (в Enterprise Manager на базе правой кнопкой выбрать Properties на закладке General значение поля Owner)? Уверен, что bmssa, а должен быть кто либо другой, например sa или администратор.
Нужно сначала отключить БД (Detach Database...) и подключить (Attach Database...) заново, указав ее владельцем (Owner) любого пользователя, кроме bmssa. Только потом опять запустить скрипт sp_change_users_login 'auto_fix','bmssa' Цитата:
не знаю, я стараюсь не рисковать в этом плане, чтоб IT наши не наезжали
|
|
25.02.2005, 08:47 | #15 |
Участник
|
Цитата:
Изначально опубликовано Михаил Андреев
Кто является владельцем базы данных Важны владельцы таблиц. |
|
25.02.2005, 09:10 | #16 |
Участник
|
Цитата:
Изначально опубликовано mazzy
По-моему, владелец базы данных никак не влияет на работу Аксапты. Важны владельцы таблиц. |
|
25.02.2005, 09:39 | #17 |
сибиряк
|
Цитата:
Изначально опубликовано OliaM
В SQL Server Enterprise Manager не получается отключить bmssa (логин) от подключенной базы. Выдается ошибка: The user owns objects in the database and cannot be dropped.
__________________
С уважением, Вячеслав. |
|
25.02.2005, 09:51 | #18 |
Участник
|
Цитата:
Изначально опубликовано slava
Попробуйте "пробежаться" по всем таблицам в базе и процедурой sp_changeobjectowner поменяйте владельца на "нового" dbo. После этого старый логин должен беспроблемно отключиться. |
|
25.02.2005, 10:04 | #19 |
Участник
|
Этот скрипт?
-- Скрипт меняет владельца всех объектов в БД, принадлежащих dbo на bmssa
-- Запускать нужно от dbo ----- BEGIN OF SCRIPT ------------------ declare @uid_from int, @name varchar(1000); select @uid_from = uid from sysusers where name = 'dbo'; DECLARE CT CURSOR FOR select 'dbo.'+name from sysobjects where uid = @uid_from and xtype = 'U'; OPEN CT WHILE 1=1 begin FETCH FROM CT INTO @Name IF @@fetch_status=-1 BREAK; IF @@fetch_status=-2 CONTINUE; exec sp_changeobjectowner @name, 'bmssa'; PRINT @Name; end; DEALLOCATE CT |
|
25.02.2005, 10:10 | #20 |
сибиряк
|
Цитата:
Изначально опубликовано Михаил Андреев
Вручную не пробежишься.
__________________
С уважением, Вячеслав. |
|