|  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 | 
| сибиряк | Цитата: 
		
			Изначально опубликовано Михаил Андреев  Вручную не пробежишься.   
				__________________ С уважением, Вячеслав. | 
|  |