Да спасибо, что указал... А можно у тебя попросить более подробно описать как убить и создать пользователя в SQLedward_K писал(а):там где то было написано, что тригеры нужно отключать.
Если вы внимательно почитаете весь топик, то увидите, что я сие не делаю. Делов то - создать руками зверя и дать ему нужные права(ну да - нужно подсмотреть роли на старом серваке) - в базе прибил, в сервере создал с тем же паролем как был в галке, роли назначил на базу и все.
Перенос БД MSSQL на новый сервер
Модераторы: m0p3e, edward_K, Модераторы
Re: Перенос БД MSSQL на новый сервер
Re: Перенос БД MSSQL на новый сервер
[quote="edward_K"][/quote]
Спасибо! вроде заработало!
Спасибо! вроде заработало!
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Перенос БД MSSQL на новый сервер
ну если вы пошли по моему пути то надо еще x$users выгрузить и загрузить как import x$users from dbf ... nfsr; в сапорте- это создаст остальных зверей в базе и в сервере(то есть в Security- Users в соотв. разделах Studio) и после этого если в первый раз, то надо сделать полный пересчет прав. Иногда бывает тробла с паролями - перебитие в SQL - Security иногда помогает
Re: Перенос БД MSSQL на новый сервер
Нет, я не первый раз переношу базы, но в первый раз столкнулся с sql 2005. Интерфейс другой, много чего найти не могу. Пока поставил сам sql, оказалось, что русская для галактики беда ... а в инглиш версии с теггерами запутался. Вроде все заработало... Буду тестить
Я все таки пошел по тому пути, что в Хелпе прописан... и получилось... Спасибо!!!
Я все таки пошел по тому пути, что в Хелпе прописан... и получилось... Спасибо!!!
Re: Перенос БД MSSQL на новый сервер
Подскажите, пожалуйста!
Как правильно сделать restore базы в sql 2000...
Например!
У меня база называется Base1( рабочая), я делаю Backup и хочу ее (Base1) сделать restore в название базы Base2 (тестовая)
Как правильно сделать restore базы в sql 2000...
Например!
У меня база называется Base1( рабочая), я делаю Backup и хочу ее (Base1) сделать restore в название базы Base2 (тестовая)
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Перенос БД MSSQL на новый сервер
Читайте доку .
Делаете чистую базу
на ней Restore
В опция ставите галку - переписать существующую, из файла (на 2012 при этом слетает куда - приходится возвращать), меняете имена файлов(не таблиц) и все - дальше как обычно. В 2000 не помню, но в 2012 сие можно сохранить в скрипт. Если FullLoginName = off, то этого могет хватить - пользователи в субд уже будут. Если нет, то придется плясать с бубном по инстре. Один мой клиент вообще настроил ежедневное копирование рабочей базы в тест - тут главная проблема прибить существующие сессии в "куда".
Делаете чистую базу
на ней Restore
В опция ставите галку - переписать существующую, из файла (на 2012 при этом слетает куда - приходится возвращать), меняете имена файлов(не таблиц) и все - дальше как обычно. В 2000 не помню, но в 2012 сие можно сохранить в скрипт. Если FullLoginName = off, то этого могет хватить - пользователи в субд уже будут. Если нет, то придется плясать с бубном по инстре. Один мой клиент вообще настроил ежедневное копирование рабочей базы в тест - тут главная проблема прибить существующие сессии в "куда".
Re: Перенос БД MSSQL на новый сервер
Чистую базу ж можно не делать, достаточно имя новое написать и галку "переписать существующую" поставить. Или в 2000 обязательно на существующую разворачивать?edward_K писал(а):Читайте доку .
Делаете чистую базу
на ней Restore
В опция ставите галку - переписать существующую, из файла (на 2012 при этом слетает куда - приходится возвращать), меняете имена файлов(не таблиц) и все - дальше как обычно. В 2000 не помню, но в 2012 сие можно сохранить в скрипт. Если FullLoginName = off, то этого могет хватить - пользователи в субд уже будут. Если нет, то придется плясать с бубном по инстре. Один мой клиент вообще настроил ежедневное копирование рабочей базы в тест - тут главная проблема прибить существующие сессии в "куда".
Re: Перенос БД MSSQL на новый сервер
Мне обязательно, что бы две базы работали. На одном сервере и в двух была одна и та же информация на момент восстановления base2.
Может я не правильно описал, мне нужно что бы это все работало на одном сервере. Задача такая удалить данные реал базы, но эти данные нужны и сними будут работать определенные люди, но их не должно быть в реальной базе.
Может я не правильно описал, мне нужно что бы это все работало на одном сервере. Задача такая удалить данные реал базы, но эти данные нужны и сними будут работать определенные люди, но их не должно быть в реальной базе.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Перенос БД MSSQL на новый сервер
вам и пишут про один сервер. В зависимости от настроек запуска(см выше) процесс такой же или проще чем при переносе на новый сервак.
Можно поставить хоть 10, лишь бы места на винтах хватило. Единственно , что основная база будет душить вспомогательные - от этого никуда не деться. На 2000 будет наверное меньше проявляться, а на 2012 оптимизатор ресурсов отдает все базе с наибольшим кол-вом запросов.
Делаете два батника с разным конфигом на разные базы и все. Да. там еще нужно запустить парочку процедур на na - в i_sql.chm гляньте - чтобы таблица суррогатных ключей в napsrv обновилась. Чтоб никто не видел , но в реальной базе есть более экзотические подходы - та же филиальность(у вас же она есть) или протект.
Можно поставить хоть 10, лишь бы места на винтах хватило. Единственно , что основная база будет душить вспомогательные - от этого никуда не деться. На 2000 будет наверное меньше проявляться, а на 2012 оптимизатор ресурсов отдает все базе с наибольшим кол-вом запросов.
Делаете два батника с разным конфигом на разные базы и все. Да. там еще нужно запустить парочку процедур на na - в i_sql.chm гляньте - чтобы таблица суррогатных ключей в napsrv обновилась. Чтоб никто не видел , но в реальной базе есть более экзотические подходы - та же филиальность(у вас же она есть) или протект.
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Перенос БД MSSQL на новый сервер
если у Вас FullLoginName = off то вообще просто бак развернуть, odbc добавить на клиентских станциях(терминальном сервере) с ярлыками на новую БД.
Re: Перенос БД MSSQL на новый сервер
Всем привет!Masygreen писал(а):)) ну дак конечно она работать не будетzna писал(а):Да! Бэкап был взят с 2005, залил на 2008Masygreen писал(а):а случайно перенос не 2005-2008 был ?
1) выполняйте скрипт2) потом очисткуКод: Выделить всё
/****** Object: StoredProcedure [dbo].[CheckAtlUserName] Script Date: 03/31/2011 09:50:54 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO create procedure [dbo].[CheckAtlUserName] @login sysname as begin if @login in ('bulkadmin', 'db_accessadmin', 'db_backupoperator', 'db_datareader', 'db_datawriter', 'db_ddladmin', 'db_denydatareader', 'db_denydatawriter', 'db_owner', 'db_securityadmin', 'dbcreator', 'dbo', 'diskadmin', 'guest', 'INFORMATION_SCHEMA', 'processadmin', 'public', 'sa', 'securityadmin', 'serveradmin', 'setupadmin', 'sys', 'sysadmin') begin raiserror ('Invalid user name ''%s'' - reserved',11,1,@login) return end return 1 end GO /****** Object: StoredProcedure [dbo].[CheckError] Script Date: 03/31/2011 09:50:55 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO create procedure [dbo].[CheckError](@err int,@tcode int,@nrname varchar(20),@nrec binary(8)) as if @err=255 begin raiserror(50007,11,-1) rollback transaction end if @err=254 begin raiserror(50008,11,-1) rollback transaction end if @err=253 begin raiserror(50009,11,-1,@tcode,@nrname,@nrec) rollback transaction end return 0 GO /****** Object: StoredProcedure [dbo].[CreateAtlUser] Script Date: 03/31/2011 09:50:55 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO create procedure [dbo].[CreateAtlUser] @login sysname, @pwd varchar(25) = null, @asadm bit = null, @grp sysname = null as begin if @login is null return declare @type char(1) = case when charindex(char(92),@login)=0 then 'S' else 'U' end -- проверка зарезервированных имён if @type='S' begin declare @r int exec @r=CheckAtlUserName @login if @r=0 return end declare @sid varbinary(85), @ltype char(1), @dbname sysname, @pwdok int, @pid int, @uname sysname, @utype char(1), @uschm sysname, @ulogin sysname, @ubad bit, @rtype char(1) exec GetAtlUserInfo @login, @pwd, @sid out, @ltype out, @dbname out, @pwdok out, @pid out, @uname out, @utype out, @uschm out, @ulogin out, @ubad out -- проверка существующего логина if @sid is not null and @ltype <> @type begin raiserror ('Existing login ''%s'' has another type ''%s''',11,1,@login,@ltype) return end -- проверка привязанного юзера if @ubad=1 begin raiserror ('User for login ''%s'' has another name ''%s'' or another type ''%s'' or another scheme ''%s''',11,1,@login,@uname,@ltype,@uschm) return end -- проверка похожего юзера if @sid is null and @uname is not null and (@utype <> @type or @uschm <> 'dbo' and @uschm <> @login or @ulogin is not null) begin raiserror ('User with name ''%s'' has another type ''%s'' or another scheme ''%s'' or linked with another login ''%s''',11,1,@uname,@ltype,@uschm,@ulogin) return end -- проверка группы if @grp is not null begin select @rtype=r.type from sys.database_principals r where r.name=@grp if coalesce(@rtype,'R')<>'R' begin raiserror ('''%s'' has bad type. Cure this',11,1,@grp) return end end -- создание/модификация логина exec ValidateAtlLogin @login, @dbname, @type, @pwdok, @pwd if @@error > 0 return -- создание/модификация юзера if @pid is null begin exec ('create user ['+@login+'] for login ['+@login+'] with default_schema=dbo') if @@error > 0 return end else if @ubad is null and @ulogin is null or @uschm<>'dbo' begin declare @austmt varchar(1000) = 'alter user ['+@login+'] with ' if @ulogin is null begin set @austmt=@austmt+'login=['+@login+']' if @uschm<>'dbo' set @austmt=@austmt+',' end if @uschm<>'dbo' set @austmt=@austmt+'default_schema=dbo' exec (@austmt) if @@error > 0 return end declare @newlogin bit = case when @sid is null then 1 else 0 end, @newuser bit = case when @pid is null then 1 else 0 end, @newgrp bit = case when @rtype is null then 1 else 0 end exec ValidateAtlRoles @login, @asadm, @newlogin, @newuser, @grp, @newgrp if @@error > 0 return return 1 end GO /****** Object: StoredProcedure [dbo].[DeleteAtlUser] Script Date: 03/31/2011 09:50:55 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO create procedure [dbo].[DeleteAtlUser] @login sysname, @droplogin bit, @grp sysname as begin if exists(select 1 from sys.database_principals where name=@login and type in ('S','U')) begin exec ('drop user ['+@login+']') if @@error > 0 return end if exists(select 1 from sys.database_principals where name=@grp and type='R') begin begin try exec ('drop role ['+@grp+']') end try begin catch if error_number()=15144 begin declare @rn varchar(20),@mc cursor set @mc = cursor fast_forward for select u.name from sys.database_principals u, sys.database_principals g, sys.database_role_members m where g.name = @grp and g.principal_id = m.role_principal_id and u.principal_id = m.member_principal_id open @mc fetch next from @mc into @rn while @@fetch_status=0 begin exec sp_droprolemember @grp, @rn if @@error > 0 return fetch next from @mc into @rn end close @mc deallocate @mc exec ('drop role ['+@grp+']') if @@error > 0 return end else begin declare @s int = error_severity(), @t int = error_state(), @m nvarchar(2048) = error_message() raiserror ( @m, @s, @t ) return end end catch end if @droplogin=1 and exists(select 1 from sys.server_principals where name=@login and type in ('S','U')) begin exec ('drop login ['+@login+']') if @@error > 0 return end return 1 end GO /****** Object: StoredProcedure [dbo].[DeleteMemoValues] Script Date: 03/31/2011 09:50:55 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[DeleteMemoValues] (@MCode INT) AS -- Check privileges here DELETE FROM XX$Memo WHERE M#Code=@MCode RETURN 0 GO /****** Object: StoredProcedure [dbo].[SetCorpoHeaderOnDelete] Script Date: 03/31/2011 09:51:07 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[SetCorpoHeaderOnDelete](@LastDate INT, @LastTime INT, @LastUser BINARY(8), @OriginOffice INT )AS IF EXISTS(SELECT * FROM XX$CorpoHeaderOnDelete WHERE SPID=@@SPID) UPDATE XX$CorpoHeaderOnDelete SET Atl_LastDate=@LastDate, Atl_LastTime=@LastTime, Atl_LastUser=@LastUser, Atl_OriginOffice=@OriginOffice WHERE SPID=@@SPID ELSE INSERT INTO XX$CorpoHeaderOnDelete( SPID, Atl_LastDate, Atl_LastTime, Atl_LastUser, Atl_OriginOffice ) VALUES(@@SPID,@LastDate,@LastTime,@LastUser,@OriginOffice) RETURN 0 GO /****** Object: StoredProcedure [dbo].[ValidateAtlLogin] Script Date: 03/31/2011 09:51:07 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE procedure [dbo].[ValidateAtlLogin] @login sysname, @dbname sysname, @type char(1), @pwdok bit, @pwd varchar(25), @nlogin sysname = null as declare @db sysname = db_name() if @pwdok is null begin if @type='U' exec ('create login ['+@login+'] from windows with default_database=['+@db+']') else exec ('create login ['+@login+'] with password='''+@pwd+''', default_database=['+@db+'], check_policy=off') if @@error > 0 return end else if @nlogin is not null or @dbname is null or @pwdok=0 begin declare @alstmt varchar(1000) = 'alter login ['+@login+'] with ', @comma char = '' if @nlogin is not null begin set @alstmt=@alstmt+'name=['+@nlogin+']' set @comma=',' end if @dbname is null begin set @alstmt=@alstmt+@comma+'default_database=['+@db+']' set @comma=',' end if @pwdok=0 set @alstmt=@alstmt+@comma+'password='''+@pwd+'''' exec (@alstmt) if @@error > 0 return end GO /****** Object: StoredProcedure [dbo].[ValidateAtlRoles] Script Date: 03/31/2011 09:51:07 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO create procedure [dbo].[ValidateAtlRoles] @login sysname, @asadm bit, @newlogin bit, @newuser bit, @grp sysname = null, @newgrp bit = 1 as if @grp is not null begin -- создание группы if @newgrp=1 begin exec ('create role ['+@grp+'] authorization dbo') if @@error > 0 return end -- добавление в группу if @newgrp=1 or is_rolemember(@grp,@login) <> 1 begin exec sp_addrolemember @grp, @login if @@error > 0 return end end -- логин - админ if @asadm=1 and (@newlogin=1 or is_srvrolemember('securityadmin',@login) <> 1) begin exec sp_addsrvrolemember @login, securityadmin if @@error > 0 return end else if @asadm=0 and @newlogin=0 and is_srvrolemember('securityadmin',@login) = 1 begin exec sp_dropsrvrolemember @login, securityadmin if @@error > 0 return end -- юзер - админ if @asadm=1 and (@newuser=1 or is_rolemember('db_owner',@login) <> 1) begin exec sp_addrolemember db_owner, @login if @@error > 0 return end else if @asadm=0 and @newuser=0 and is_rolemember('db_owner',@login) = 1 begin exec sp_droprolemember db_owner, @login if @@error > 0 return end GO /****** Object: StoredProcedure [dbo].[ModifyAtlUser] Script Date: 03/31/2011 09:54:14 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO create procedure [dbo].[ModifyAtlUser] @login sysname, @nlogin sysname = null, @pwd varchar(25) = null, @asadm bit = null, @drop_unused_login bit = null, @grp sysname = null as begin if @login is null return if @nlogin is null or @nlogin=@login begin declare @r int exec @r=CreateAtlUser @login, @pwd, @asadm, @grp return @r end declare @ntype char(1) = case when charindex(char(92),@nlogin)=0 then 'S' else 'U' end if @ntype='S' begin exec CheckAtlUserName @nlogin if @@error > 0 return end if @drop_unused_login is null set @drop_unused_login=0 declare @nsid varbinary(85), @nltype char(1), @ndbname sysname, @npwdok int, @npid int, @nuname sysname, @nutype char(1), @nuschm sysname, @nulogin sysname, @nubad bit exec GetAtlUserInfo @nlogin, @pwd, @nsid out, @nltype out, @ndbname out, @npwdok out, @npid out, @nuname out, @nutype out, @nuschm out, @nulogin out, @nubad out declare @type char(1) = case when charindex(char(92),@login)=0 then 'S' else 'U' end, @sid varbinary(85), @ltype char(1), @dbname sysname, @pwdok int, @pid int, @uname sysname, @utype char(1), @uschm sysname, @ulogin sysname, @ubad bit exec GetAtlUserInfo @login, @pwd, @sid out, @ltype out, @dbname out, @pwdok out, @pid out, @uname out, @utype out, @uschm out, @ulogin out, @ubad out declare @use_nlogin bit = case when @drop_unused_login=0 or @type='U' or @ntype='U' or @sid is null /*or @ltype<>@type or @ubad=1*/ then 1 else 0 end declare @use_nuser bit = case when @pid is null or @ubad=1 or @type<>@ntype then 1 else 0 end if @use_nlogin=1 and @nubad=1 begin raiserror ('В БД к логину %s привязан некорректный юзер',11,1,@nlogin) return end declare @rtype char(1) if @grp is not null begin select @rtype=r.type from sys.database_principals r where r.name=@grp if coalesce(@rtype,'R')<>'R' begin raiserror ('''%s'' has bad type. Cure this',11,1,@grp) return end end if @use_nlogin=1 begin if @drop_unused_login=1 and @sid is not null and @ltype=@type and @ubad<>1 begin try exec ('drop login ['+@login+']') end try begin catch end catch exec ValidateAtlLogin @nlogin, @dbname, @ntype, @npwdok, @pwd if @@error > 0 return end else begin if @nsid is not null begin exec ('drop login ['+@login+']') if @@error>0 return end exec ValidateAtlLogin @login, @dbname, @type, @pwdok, @pwd, @nlogin if @@error > 0 return end if @use_nuser=1 begin if @pid is not null begin try exec ('drop user ['+@uname+']') end try begin catch end catch if @npid is null begin exec ('create user ['+@nlogin+'] for login ['+@nlogin+'] with default_schema=dbo') if @@error > 0 return end else if @nuschm<>'dbo' begin exec ('alter user ['+@nlogin+'] with default_schema=dbo') if @@error > 0 return end end else begin if @nuname=@nlogin begin exec ('drop user ['+@nuname+']') if @@error > 0 return end exec ('alter user ['+@login+'] with name=['+@nlogin+'],login=['+@nlogin+'],default_schema=dbo') if @@error > 0 return end declare @newlogin bit = case when @use_nlogin=1 and @nsid is null then 1 else 0 end, @newuser bit = case when @use_nuser=1 and @npid is null then 1 else 0 end, @newgrp bit = case when @rtype is null then 1 else 0 end exec ValidateAtlRoles @login, @asadm, @newlogin, @newuser, @grp, @newgrp if @@error > 0 return return 1 end GO /****** Object: StoredProcedure [dbo].[GetAtlUserInfo] Script Date: 03/31/2011 09:55:04 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO create procedure [dbo].[GetAtlUserInfo] @login sysname, @pwd varchar(25), @sid binary(85) out, @ltype char(1) out, @dbname sysname out, @pwdok bit out, @pid int out, @uname sysname out, @utype char(1) out, @uschm sysname out, @ulogin sysname out, @bad_linked_user bit out as begin select @sid=l.sid, @ltype=l.type, @dbname=d.name, @pwdok=case when @pwd is null or l.type<>'S' then 1 else pwdcompare(@pwd, convert(varbinary(256),loginproperty(@login,'PasswordHash'))) end, @pid=u.principal_id, @uname=u.name, @utype=u.type, @uschm=u.default_schema_name from sys.server_principals l left join sys.databases d on l.default_database_name=d.name left join sys.database_principals u on l.sid=u.sid where l.name=@login set @bad_linked_user=case when @pid is null then null else case when @uname<>@login or @utype<>@ltype then 1 else 0 end end if @pid is null or @uname<>@login select @pid=u.principal_id, @uname=u.name, @utype=u.type, @uschm=u.default_schema_name, @ulogin=l.name from sys.database_principals u left join sys.server_principals l on u.sid=l.sid where u.name=@login end GO /****** Object: StoredProcedure [dbo].[GetCurrOffice] Script Date: 03/31/2011 09:55:04 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[GetCurrOffice] (@Office INT OUTPUT) AS SELECT @Office=OfficeNo FROM X$JournalConfig IF @Office IS NULL SELECT @Office=0 RETURN 0 GO /****** Object: StoredProcedure [dbo].[GetDBUserName] Script Date: 03/31/2011 09:55:04 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO create procedure [dbo].[GetDBUserName](@spid smallint) as select user_name(uid) from master..sysprocesses where spid=@spid return 0 GO /****** Object: StoredProcedure [dbo].[GetHeader] Script Date: 03/31/2011 09:55:04 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[GetHeader] (@OfficeNo INT OUTPUT,@UserNRec BINARY(8) OUTPUT) AS DECLARE @UserLogin VARCHAR(32),@UserOffice INT,@StrPos INT,@StartPos INT,@PrevPos INT EXEC GetCurrOffice @OfficeNo OUTPUT DECLARE @SkipUpdateFields INT EXEC @SkipUpdateFields=master..na_skipupdatefields @@SPID IF @SkipUpdateFields<>1 SELECT @UserLogin=SUser_SName() ELSE EXEC master..na_getcurruser @@spid, @UserLogin output SELECT @StartPos=1,@PrevPos=1 WHILE 1=1 BEGIN SELECT @StrPos=CHARINDEX('#',SUBSTRING(@UserLogin,@StartPos,33)) IF @StrPos=0 BREAK SELECT @PrevPos=@StartPos,@StartPos=@StrPos+@StartPos CONTINUE END IF SUBSTRING(@UserLogin,@StartPos,1) BETWEEN '0' AND '9' BEGIN SELECT @UserOffice=CONVERT(INT,SUBSTRING(@UserLogin,@StartPos,33)) SELECT @UserLogin=SUBSTRING(@UserLogin,@PrevPos,@StartPos-@PrevPos-1) END ELSE BEGIN SELECT @UserOffice=@OfficeNo SELECT @UserLogin=SUBSTRING(@UserLogin,@StartPos,33) END SELECT @UserNRec=Atl_NRec FROM X$Users WHERE XU$LoginName=@UserLogin AND XU$UserOffice=@UserOffice IF @UserNRec IS NULL SELECT @UserNRec=0x8000000000000000 RETURN 0 GO /****** Object: StoredProcedure [dbo].[GetJournalKey] Script Date: 03/31/2011 09:55:04 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO create procedure [dbo].[GetJournalKey]( @JNRec binary(8) output ) as declare @db_name varchar(30),@needmax int select @db_name=upper(db_name()),@needmax=0 declare @OriginOffice int exec GetCurrOffice @OriginOffice output if @JNRec is null select @JNRec=0x8000000000000000 exec master..na_getnextnrec @db_name,15,@JNRec output,@needmax output if @needmax=1 begin declare @max#JNRec binary(8) select @max#JNRec=max(NREC) from X$JOURNAL where convert(int,substring(NREC,1,2))=(@OriginOffice|0x8000) if @max#JNRec is null select @max#JNRec=0x8000000000000000 exec master..na_getnextnrecbymax @db_name,15,@JNRec output,@needmax output,@max#JNRec end exec CheckError @needmax,15,'NREC',@JNRec select @JNRec=convert(binary(2),@OriginOffice|0x8000)+substring(@JNRec,3,6)return 0 GO /****** Object: StoredProcedure [dbo].[GetJournalMode] Script Date: 03/31/2011 09:55:04 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[GetJournalMode](@Mode TINYINT OUTPUT) AS SELECT @Mode=TypeJournal FROM X$JournalConfig IF @Mode IS NULL SELECT @Mode=0 RETURN 0 GO /****** Object: StoredProcedure [dbo].[GetJournalModeForTable] Script Date: 03/31/2011 09:55:04 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[GetJournalModeForTable](@TableCode INT,@Mode TINYINT OUTPUT) AS DECLARE @ForCorpo TINYINT,@ForPersons TINYINT,@ForRepair TINYINT SELECT @ForCorpo=ForCorpo,@ForPersons=ForPersons,@ForRepair=ForRepair FROM X$RegisterTables WHERE TableCode=@TableCode IF (@ForCorpo IS NULL) OR (@ForCorpo=0 AND @ForPersons&~17=0 AND @ForRepair=0) SELECT @Mode=0 ELSE SELECT @Mode=1 RETURN 0 GO /****** Object: StoredProcedure [dbo].[GetJournalStatusForTable] Script Date: 03/31/2011 09:55:04 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[GetJournalStatusForTable](@TableCode INT,@Status TINYINT OUTPUT) AS SELECT @Status=ForCorpo FROM X$RegisterTables WHERE TableCode=@TableCode IF @Status IS NOT NULL BEGIN IF @Status=1 SELECT @Status=0 ELSE SELECT @Status=1 END ELSE RETURN 0 GO /****** Object: StoredProcedure [dbo].[GetMemoValue] Script Date: 03/31/2011 09:55:04 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[GetMemoValue] (@MCode INT, @MNRec BINARY(8)) AS -- Check privileges here SELECT M#Data FROM XX$Memo WHERE M#Code=@MCode AND M#NRec=@MNRec AND M#Flag=0 RETURN 0 GO /****** Object: StoredProcedure [dbo].[GetProcName] Script Date: 03/31/2011 09:55:04 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[GetProcName](@infosize integer,@hashvalue binary(16),@info varbinary(7971)) as select procname,memoinfo from xx$hashvalues where infosize=@infosize and hashvalue=@hashvalue and info=@info return 0 GO
3) потом чекSQL
Скажите данная процедура работает на SQL Server 2012
Пытаюсь поднять на 2012 SQL Server bakup с 2008, и возникает такая же ошибка
И можно по подробней
2) потом чистка - это как?
3) потом чекSQl - это как?
Спасибо!