Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» Microsoft SQL SERVER

Автор: Bill_PHO
Дата сообщения: 26.05.2007 18:16
Возможна ли удаленная отладка хранимых процедур на MS SQL 2005 с компьютера, работающего под XP SP2 Home Edition?
Может кто поделится своим опытом?

У меня из под Pofessional - получается, из под Home - нет.
Автор: Alex_Pee
Дата сообщения: 28.05.2007 09:14
Nimnul

Спасибо за ссылку, реестр по ней поправил, правда пока не могу перезагрузиться, чтобы окончательно проверить, но я думаю это сработает!!!


Bill_PHO

Можно из HOME спокойно сделать PROFF, если тебя конечно не будут мучать угрызения совести...

Вот ссылка: http://www.webheim.com/modules.php?op=modload&name=News&file=article&sid=189

Вариант рабочий, я уже с десяток таких операций проделал.

Автор: Bill_PHO
Дата сообщения: 28.05.2007 12:25
Alex_Pee
Спасибо, попробовал.
Говорит то система, что она Проф., но у нее не появилось самого главного из-за чего удаленный отладчик не работает. Не появилось возможности перестроить Local Security Policy.
Похоже каких-то файлов не хватает и от проведенных изменений они не появились.

Добавлено:
Alex_Pee
Не появились и свойства папок, присущие Professional, связанные с Security.
Да и сам реестр не пополнился веточками, такими как у Проф.

Впечатление такое, что кроме названия продукта ничего не изменилось.
Автор: Bill_PHO
Дата сообщения: 29.05.2007 12:43
2 All

Подскажите еще одно, если кто знает (а ведь кто-нибудь да знает).
Возможна ли удаленная отладка хранимых процедур на MS SQL Server 2005, размещенного в группе, а не в домене?
Автор: Bugriy
Дата сообщения: 15.06.2007 16:16
Подскажите, как быть. Нужно перенести полностью базы с одного сервера на другой (новый сервер в кластере). Проблема в переносе мастера. Как только на новый сервер цепляется мастер со старого сервера, SQL сразу начинает искать базы по тем же путям, по которым они находились на старом сервере. На новом сервере этот путь - кворумный диск. Положить туда базы нельзя, потому что этот диск не входит в SQL ресурс. Не цеплять мастер от старого сервера тоже нельзя - пропадут учётки пользователей, скрипты и т.д. Что делать?
Автор: FreemanRU
Дата сообщения: 15.06.2007 16:24
Bugriy

Цитата:
Не цеплять мастер от старого сервера тоже нельзя - пропадут учётки пользователей, скрипты и т.д. Что делать?

Старый проверенный метод - бакап/рестор
Автор: econ2
Дата сообщения: 15.06.2007 18:28

Цитата:
цеплять мастер от старого сервера тоже нельзя - пропадут учётки пользователей, скрипты и т.д. Что делать?


Чтобы после поднятия бакапа учетки не пропали:

Перенос логинов с паролями SQL 2005 -> SQL 2005
http://www.economicsoft.ru/forums/viewtopic.php?t=3069

Перенос логинов с паролями из SQL 2000 -> SQL 2005
http://www.economicsoft.ru/forums/viewtopic.php?t=3069
Автор: Bugriy
Дата сообщения: 18.06.2007 09:17
econ2
Учётки сохранятся, но DTS тогда пропадут.
Автор: econ2
Дата сообщения: 18.06.2007 09:28
Bugriy

А DTS отдельно заскриптовать никак нельзя?
Автор: Bugriy
Дата сообщения: 18.06.2007 09:59
econ2
Как?
Автор: FreemanRU
Дата сообщения: 18.06.2007 10:07
Bugriy
Смотря как у тебя храниться DTS-ка. Если в системе - то бакап базы master
Автор: Bugriy
Дата сообщения: 18.06.2007 10:16
FreemanRU
А толку? Восстановить всё равно не получится.
Автор: Guzya
Дата сообщения: 19.06.2007 13:58
File Access Stored Procedures for SQL Server 7.0, 2000, and 2005
http://mastercluster.com/xprocFileUtils.html

Слухайте... а вот такого подобного ФУЛЛ не встречали? Мне бы что-то подобное, чтоб там File access/Drive and directory access такой был как в Про. Может есть что-то аналогичное?
Заранее спасибо
Автор: FreemanRU
Дата сообщения: 19.06.2007 14:16
Bugriy

Цитата:
Восстановить всё равно не получится

??? А кто тебе мешает базу master восстановить?
Автор: econ2
Дата сообщения: 19.06.2007 16:50
FreemanRU
Дык товарищ хочет чтобы базы поднялись по другим путям!
А восстановив мастер, они по старым путям прописываются.

Хотя что мешает ему сделать банальный detach/attach - я не понимаю,
да и заскриптовать DTS пакеты - на раз два делов то...
Автор: naPmu3aH
Дата сообщения: 19.06.2007 19:05
FreemanRU

Цитата:
??? А кто тебе мешает базу master восстановить?

Восстановление master это хорошо для recovery, но не для переноса.
Впрочем перенос DTS packages где бы они не хранились - не такая уж сверхзадача. Но за что человека в гугле забанили я не представляю...
Навскидку нашелл http://www.sqldts.com/272.aspx
Автор: SerP and MoloT
Дата сообщения: 20.06.2007 09:36
Ребятки помогите!!!
После перезагрузки сервака sql не стартует, пытаюсь запустить через службы выдаёт : не удалось запустить службу мскл на локальный комп, Эта служба не возвращала ошибки Возможно это внутренняя ошибка виндовс или службы...
чё делать то???

а при включении выдал что не удалось запустить службу WINS это как то связано!!???
Автор: econ2
Дата сообщения: 20.06.2007 15:48
SerP and MoloT
Смотри логи SQL сервера: C:\MSSQL\LOG\errorlog
(по тому пути, где он у тебя установлен)
и в Event Viewer заглянуть не помешало бы...
Автор: Bugriy
Дата сообщения: 26.06.2007 08:39
Есть ли в природе какой-нибудь скрипт для восстановления баз? Есть папка с бекапами баз, нужно их восстановить на сервер, причём с другими путями.

Добавлено:
naPmu3aH
FreemanRU
econ2

В общем, ситуация с восстановлением мастера на кластере очень не простая. Дело в том, что путь, по которому находились базы на старом сервере - это кворумный диск. Соответственно отдать его виртуальному серверу невозможно. Для того чтобы поменять пути рабочих баз нужно чтобы поднялся сервер SQL. А он не поднимется без системных баз. Соответственно поменять их пути не получится при нестартованном SQL. Плюс на кластере не работают ключи "-c -m -T3608". Поэтому детачить-аттачить системные базы не получается.
Автор: econ2
Дата сообщения: 26.06.2007 09:25
>Есть ли в природе какой-нибудь скрипт для восстановления баз?

Ну конечно есть.
Не понятно, почему ты не можешь воспользоваться оконным интерфейсом для этой задачи.

Но раз хочешь скриптами, то пожалуйста:

declare @BackupFile varchar(256), @NewDatabasePath varchar(256), @NewDatabaseName varchar(256)

--тут лежит бакап
select @BackupFile = 'D:\MSSQL\BACKUP\vvc.bcp',
--путь, по которому поднимется база
@NewDatabasePath = 'D:\MSSQL\Data',
--имя поднимаемой из бакапа базы
@NewDatabaseName = 'Lexema'    

if not object_id('tempdb..#backup') is null drop table #backup
create table #backup
(logicalname varchar(50) null, physicalname varchar(50) null, type char(5) null, filegroupname varchar(50) null, [size] float null, [maxsize] float null)
insert into #backup
exec('RESTORE FILELISTONLY FROM DISK = '''+@BackupFile+''' WITH FILE = 1 , NOUNLOAD')
declare @Log varchar(128), @Data varchar(128), @LogFile varchar(256), @DataFile varchar(256)
select @Data = logicalname from #backup where type = 'D'
select @DataFile = @NewDatabasePath+'\'+@NewDatabaseName+'.mdf'
select @Log = logicalname from #backup where type = 'L'
select @LogFile = @NewDatabasePath+'\'+@NewDatabaseName+'.ldf'
RESTORE DATABASE [LexAuto] FROM DISK = @BackupFile WITH FILE = 1, NOUNLOAD , STATS = 10, RECOVERY , REPLACE ,
MOVE @Data TO @DataFile,
MOVE @Log TO @LogFile
Автор: Bugriy
Дата сообщения: 26.06.2007 09:42
econ2
Потому что баз 50 штук. Я их уже 4 раза восстанавливал, скоро крыша съедет от оконного интерфейса.

Добавлено:
1. Баз много, хочется чтобы скрипт сам их находил в папке.
2. Логи транзакций надо восстанавливать в отдельный путь.
Автор: econ2
Дата сообщения: 26.06.2007 15:02
Bugriy
Да все возможно, даже средствами SQL.
Бери мой скрипт и модифицируй его дальше:
- получаешь список бакапов в папке. (например, через xp_cmdshell 'dir c:\mssql\data')
- по нему во временную таблицу формируешь список того что будешь восстанавливать
- курсором идешь по этой временной таблице и восстанавливаешь что и куда тебе нужно и по каким нужно путям.
Автор: Bugriy
Дата сообщения: 26.06.2007 15:26
econ2
Если бы я знал SQL-транзакт, то я бы просто написал скрипт вместо того чтоб сюда писать.
Автор: econ2
Дата сообщения: 27.06.2007 08:47
Bugriy

Цитата:
Если бы я знал SQL-транзакт, то я бы просто написал скрипт вместо того чтоб сюда писать


Вот, примерно так:
скрипт писал под 2005, но в 2000 тоже будет работать,
перекинь коментарии, где список полей для #Backup формируется, дело в том,
что 2005 и 2000 возвращают разлиные наборы полей при запуске RESTORE FILELISTONLY, ну и еще, возможно понадобится открыть xp_cmdshell,
в 2005 она по умолчанию закрыта.

Удачи!

Скрипт поднимает ВСЕ бакапы из заданного каталога
по указанным папкам для MDF и LDF
Бакапы должны иметь расширение bak!


Код: use master
/*
drop database test1
go
drop database test2
go
drop database test3
go
*/
declare @FileName varchar(255),
@BackupPath varchar(256),
@BackupFile varchar(256),
@NewDatabaseMDFPath varchar(256),
@NewDatabaseLDFPath varchar(256),
@NewDatabaseName varchar(256),
@Log varchar(128),
@Data varchar(128),
@LogFile varchar(256),
@DataFile varchar(256)

select @BackupPath = 'C:\MSSQL\Backup\Test',
@NewDatabaseMDFPath = 'C:\MSSQL\Data',
     @NewDatabaseLDFPath = 'C:\MSSQL\Data\Logs'

if object_id('tempdb..#Dir') is not null drop table #Dir
-- для работы в 2005 - запуск xp_cmdshell нужно сначала разрешить!!!
create table #Dir (Output varchar(255) null)
-- Бакапы должны иметь расширение .bak!!!
insert into #Dir
exec('xp_cmdshell ''dir '+@BackupPath+'\*.bak /B''')
delete from #Dir where output not like '%.bak' or output is null
-- теперь в #Dir чистый список бакапов
-- select * from #Dir


DECLARE Files_Cursor CURSOR FORWARD_ONLY FOR
SELECT Output FROM #Dir

OPEN Files_Cursor

FETCH NEXT FROM Files_Cursor
INTO @FileName

WHILE @@FETCH_STATUS = 0
BEGIN
print @FileName

--тут лежит бакап
select @BackupFile = @BackupPath+'\'+@FileName

if not object_id('tempdb..#backup') is null drop table #backup
create table #backup
-- Список полей для SQL 2000
-- (logicalname varchar(50) null, physicalname varchar(50) null, type char(5) null, filegroupname varchar(50) null, size float null, maxsize float null)
--список полей для SQL 2005
(LogicalName nvarchar(128), PhysicalName nvarchar(260), type char(5) null, filegroupname nvarchar(128) null,
Size numeric(20,0), MaxSize numeric(20,0), FileID bigint, CreateLSN numeric(25,0), DropLSN numeric(25,0) NULL,
UniqueID uniqueidentifier, ReadOnlyLSN numeric(25,0) NULL, ReadWriteLSN numeric(25,0) NULL,
BackupSizeInBytes bigint, SourceBlockSize int, FileGroupID int, LogGroupGUID uniqueidentifier NULL,
DifferentialBaseLSN numeric(25,0) NULL, DifferentialBaseGUID uniqueidentifier, IsReadOnly bit, IsPresent bit)

insert into #backup
exec('RESTORE FILELISTONLY FROM DISK = '''+@BackupFile+''' WITH FILE = 1 , NOUNLOAD')

select @Data = logicalname, @NewDataBaseName = logicalname from #backup where type = 'D'
select @DataFile = @NewDatabaseMDFPath+'\'+@NewDatabaseName+'.mdf'
select @Log = logicalname from #backup where type = 'L'
select @LogFile = @NewDatabaseLDFPath+'\'+@NewDatabaseName+'.ldf'

print @DataFile
print @LogFile

RESTORE DATABASE @NewDataBaseName FROM DISK = @BackupFile WITH FILE=1, NOUNLOAD, STATS=10, RECOVERY, REPLACE,
MOVE @Data TO @DataFile,
MOVE @Log TO @LogFile

FETCH NEXT FROM Files_Cursor
INTO @FileName
END

CLOSE Files_Cursor
DEALLOCATE Files_Cursor
Автор: Bugriy
Дата сообщения: 27.06.2007 10:10
econ2
Что-то странное. Попытался 2 базы восстановить. Забэкапил 2 базы, затем деаттачил их. Файлы не удалял. Запустил скрипт, в итоге одна восстановилась с неправильным именем, а другой вообще нет. Я так понимаю что ошибка в определении имён баз. Первая называлась Analitica, вторая - Analitica 2005. А восстановились они в одну базу с названием Analitica_DATA.


(3 row(s) affected)


(1 row(s) affected)

Analitica.bak

(2 row(s) affected)

G:\Data\Analitica_Data.mdf
H:\LOGS\Analitica_Data.ldf
10 percent restored.
20 percent restored.
30 percent restored.
40 percent restored.
50 percent restored.
60 percent restored.
70 percent restored.
80 percent restored.
90 percent restored.
100 percent restored.
Processed 1072 pages for database 'Analitica_Data', file 'Analitica_Data' on file 1.
Processed 1 pages for database 'Analitica_Data', file 'Analitica_Log' on file 1.
RESTORE DATABASE successfully processed 1073 pages in 0.277 seconds (31.707 MB/sec).
Analitica2005.bak

(2 row(s) affected)

G:\Data\Analitica_Data.mdf
H:\LOGS\Analitica_Data.ldf
10 percent restored.
20 percent restored.
30 percent restored.
40 percent restored.
50 percent restored.
60 percent restored.
70 percent restored.
80 percent restored.
90 percent restored.
100 percent restored.
Processed 1080 pages for database 'Analitica_Data', file 'Analitica_Data' on file 1.
Processed 1 pages for database 'Analitica_Data', file 'Analitica_Log' on file 1.
RESTORE DATABASE successfully processed 1081 pages in 0.778 seconds (11.373 MB/sec).
Автор: econ2
Дата сообщения: 27.06.2007 12:41
Bugriy

Слегка подправил скрипт, скоректировал получение имени базы данных из бакапа
через RESTORE HEADERONLY



Код: use master
set nocount on
declare @FileName varchar(255),
@BackupPath varchar(256),
@BackupFile varchar(256),
@NewDatabaseMDFPath varchar(256),
@NewDatabaseLDFPath varchar(256),
@NewDatabaseName varchar(256),
@Log varchar(128),
@Data varchar(128),
@LogFile varchar(256),
@DataFile varchar(256)

select @BackupPath = 'C:\MSSQL\Backup\Test',
@NewDatabaseMDFPath = 'C:\MSSQL\Data',
     @NewDatabaseLDFPath = 'C:\MSSQL\Data\Logs'

if object_id('tempdb..#Dir') is not null drop table #Dir
-- для работы в 2005 - запуск xp_cmdshell нужно сначала разрешить!!!
create table #Dir (Output varchar(255) null)
-- Бакапы должны иметь расширение .bak!!!
insert into #Dir
exec('xp_cmdshell ''dir '+@BackupPath+'\*.bak /B''')
delete from #Dir where output not like '%.bak' or output is null
-- теперь в #Dir чистый список бакапов
-- select * from #Dir


DECLARE Files_Cursor CURSOR FORWARD_ONLY FOR
SELECT Output FROM #Dir

OPEN Files_Cursor

FETCH NEXT FROM Files_Cursor
INTO @FileName

WHILE @@FETCH_STATUS = 0
BEGIN
print @FileName

--тут лежит бакап
select @BackupFile = @BackupPath+'\'+@FileName

if not object_id('tempdb..#backup') is null drop table #backup
if not object_id('tempdb..#backupheader') is null drop table #backupheader
create table #backupheader
-- список полей для SQL 2000 смотри в Books Online
-- mk:@MSITStore:C:\Program%20Files\Microsoft%20SQL%20Server\80\Tools\Books\tsqlref.chm::/ts_ra-rz_5urd.htm
--список полей для SQL 2005
(BackupName nvarchar(128), BackupDescription nvarchar(255), BackupType smallint, ExpirationDate datetime,
Compressed tinyint, Position smallint, DeviceType tinyint, UserName nvarchar(128), ServerName nvarchar(128),
DatabaseName nvarchar(128), DatabaseVersion int, DatabaseCreationDate datetime, BackupSize numeric(20,0),
FirstLSN numeric(25,0), LastLSN numeric(25,0), CheckpointLSN numeric(25,0), DatabaseBackupLSN numeric(25,0),
BackupStartDate datetime, BackupFinishDate datetime, SortOrder smallint, CodePage smallint, UnicodeLocaleId int,
UnicodeComparisonStyle int, CompatibilityLevel tinyint, SoftwareVendorId int, SoftwareVersionMajor int,
SoftwareVersionMinor int, SoftwareVersionBuild int, MachineName nvarchar(128), Flags int, BindingID uniqueidentifier,
RecoveryForkID uniqueidentifier, Collation nvarchar(128), FamilyGUID uniqueidentifier, HasBulkLoggedData bit, IsSnapshot bit,
IsReadOnly bit, IsSingleUser bit, HasBackupChecksums bit, IsDamaged bit, BeginsLogChain bit,
HasIncompleteMetaData bit, IsForceOffline bit, IsCopyOnly bit, FirstRecoveryForkID uniqueidentifier,
ForkPointLSN numeric(25,0) NULL, RecoveryModel nvarchar(60), DifferentialBaseLSN numeric(25,0) NULL,
DifferentialBaseGUID uniqueidentifier, BackupTypeDescription nvarchar(60), BackupSetGUID uniqueidentifier NULL)
insert into #backupheader
exec('RESTORE HEADERONLY FROM DISK = N'''+@BackupFile+''' WITH FILE = 1 , NOUNLOAD')

--получаем имя базы
select @NewDataBaseName = DatabaseName from #backupheader

-- получаем имена Data и Log дивайсов

create table #backup
-- Список полей для SQL 2000
-- (logicalname varchar(50) null, physicalname varchar(50) null, type char(5) null, filegroupname varchar(50) null, size float null, maxsize float null)
--список полей для SQL 2005
(LogicalName nvarchar(128), PhysicalName nvarchar(260), type char(5) null, filegroupname nvarchar(128) null,
Size numeric(20,0), MaxSize numeric(20,0), FileID bigint, CreateLSN numeric(25,0), DropLSN numeric(25,0) NULL,
UniqueID uniqueidentifier, ReadOnlyLSN numeric(25,0) NULL, ReadWriteLSN numeric(25,0) NULL,
BackupSizeInBytes bigint, SourceBlockSize int, FileGroupID int, LogGroupGUID uniqueidentifier NULL,
DifferentialBaseLSN numeric(25,0) NULL, DifferentialBaseGUID uniqueidentifier, IsReadOnly bit, IsPresent bit)

insert into #backup
exec('RESTORE FILELISTONLY FROM DISK = '''+@BackupFile+''' WITH FILE = 1 , NOUNLOAD')

--имя файла составляется из пути + имя базы
select @Data = LogicalName from #backup
select @DataFile = @NewDatabaseMDFPath+'\'+@NewDatabaseName+'.mdf'
select @Log = LogicalName from #backup
select @LogFile = @NewDatabaseLDFPath+'\'+@NewDatabaseName+'.ldf'

print @NewDataBaseName
print @DataFile
print @LogFile

RESTORE DATABASE @NewDataBaseName FROM DISK = @BackupFile WITH FILE=1, NOUNLOAD, STATS=100, RECOVERY, REPLACE,
MOVE @Data TO @DataFile,
MOVE @Log TO @LogFile

FETCH NEXT FROM Files_Cursor
INTO @FileName
END

CLOSE Files_Cursor
DEALLOCATE Files_Cursor
Автор: well2
Дата сообщения: 18.07.2007 09:41
Помогите, пожалуйста с подключением к серверу!
Установил MSSQL 2000 на комп(имя SQL).
Сервис запускается, под именем администратора могу зайти в системную базу, посмотреть и.т.д. В общем сервер работает.
На другом компьютере сети ставлю клиента.
Пробую связаться с сервером (файл *.udl) Пишу имя сервера MyServer, логин администратора, пароль администратора. Но при проверке выдается ошибка "указанный sql сервер не найден".
Где ошибка?
Автор: econ2
Дата сообщения: 18.07.2007 20:58

Цитата:
Где ошибка?

Что-то ты не то делаешь...

Сеть TCP/IP?

На сервере запускаешь Server Network Utility,
смотришь, чтобы TCP/IP протокол enabled был

На клиенте запускаешь Client Network Utility (cliconfg.exe),
смотришь, чтобы TCP/IP протокол enabled был

Вот и все!
Связываешься с сервером, указывая имя компа (это и будет имя SQL Server'a, а не MyServer) или имя_компа\имя_экземляра_sql, если ты устанавливал SQL в не экземпляр "по умолчанию"

Были проблемы коннета к SQL серверу, установленного в экземпляре (SQL\Instance)
В этом случае помогало создание псевдонима (Alias) к IP SQL Server'a в cliconfg.exe
Автор: well2
Дата сообщения: 19.07.2007 15:59
Сеть TCP/IP
В клиенте и сервере протоколы в енабле .
ping по имени компьютера есть, но сервер не обнаруживается.
Может на компе сервера добавить учётные записи клиентов?
Автор: MouseDriver
Дата сообщения: 19.07.2007 20:15
Посоветуйте, есть ли смысл ставить на 2003x64 обязательно 64 битный ms sql, будет ли прирост в производительности.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Измерение скорости сети LAN - все программы


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.