FAQ по MS SQL 7.0.

Просто интересные вопросы по MS SQL 7.0

11. Как запускать-останавливать SQL Server через командную строку? Мне это нужно для использования в скриптах.

Остановка:

NET STOP MSSQLSERVER

или если вы используете также sql agent (он будет спрашивать вас о остановке связанных сервисов, опция /y остановит его без ввода с клавиатуры)

NET STOP MSSQLSERVER /y

Запуск:

NET START MSSQLSERVER

или если вы запускаете также sql agent (так как agent требует запущеный SQL Server для работы, то он его и запустит автоматически в первую очередь).

NET START SQLSERVERAGENT

(www.sqlservercentral.com)

10. Я создал DTS для сопирования данных и он работает хорошо когда я его просто запускаю, когда же я schedule a job, задача каждый раз выдаёт ошибку.. error is ==> The Job was invoked by user sa, the last step to run was step1.

Эта проблема появляется после установки service pack 2. Вам нужно зарегистрировать ваш entreprise manager под другим логином (лучше не SA, который использовался бы только для запуска packages). После этого, отредактируйте ваш package и сохраните под новым именем (NEWNAME, к примеру), теперь заново установите расписание и вперед.

(sqlservercentral.com)

9. Принес backup БД с другого сервера, но восстановить не могу. Ругает на сортировку. Как узнать какие установки сервера надо задать, чтобы восстановить из backup.

Для успешного восстановления из backup необходимо точное совпадение установок сортировки. Изменить эти установки можно, только перестроив БД master.
Чтобы посмотреть текущие установки можно воспользоваться хранимой процедурой sp_helpsort или sp_configure.
ХП sp_helpsort показывает:
· Character Set - кодовая страница;
· Code Page - id кодовой страница;
· Sort Order - тип сортировки (словарная или нет, чувствительная к регистру или нет);
· Characters, in Order - показывает, в каком порядке будут сортироваться символы из набора.
MS SQL Server 7.0 дополнительно имеет характеристики сортировки UNICODE-овых данных (Unicode data sorting):
· Locale ID - id выбранного Unicode;
· Case insensitive - нечувствительность к регистру (case sensitive - флажок не установлен);
· Accent-insensitive - нечувствительность к диакритическому знаку (если не показывается - флажок не установлен);
· Width insensitive - нечувствительность к ширине (если не показывается - флажок не установлен);
· Kana type insensitive - нечувствительность к типу Kana (если не показывается - флажок не установлен).
ХП sp_configure показывает:
· default sortorder id - определяет набор символов, порядок сортировки и кодовую страницу.
MS SQL Server 7.0 дополнительно имеет характеристики сортировки UNICODE-овых данных:
· Unicode locale id - id выбранного Unicode;
· Unicode comparison style - определяет четыре установки сопоставления Unicode.

(www.comp.udmnet.ru)

8. Проблема. Какой-то пользователь внес изменения в справочник, которые имели нехорошие последствия. Конечно все говорят что ничего не делали. Можно ли как-то найти кто и когда это сотворил

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

(www.comp.udmnet.ru)

7. Как переименовать базу данных?

Нужно обладать правами администратора или владельца базы данных, перевести БД в однопользовательский режим, выполнить хранимую процедуру:
sp_renamedb '', ''
После этого БД можно перевести в многопользовательский режим.

(www.comp.udmnet.ru)

6. SQL-сервер не принимает дату в таком виде - '13.12.97'. Что делать?

По умолчанию дата в SQL-запросе принимается в следующем формате - mdy. Изменить это можно с помощью команд SET DATEFORMAT. Синтаксис: set dateformat mdy|dmy|ymd. Действует на текущий коннект.

(www.comp.udmnet.ru)

5. Сколько столбцов может быть в таблице?

В MS SQL Server - 6.5 - 250
В MS SQL Server - 7.0 - 1024

(www.comp.udmnet.ru)

4. В T-SQL есть оператор LIKE, который использует спец. символы:
• '%' - любые один или несколько символов;
• '_' - один любой символ.
А как искать строки, в которых присутствуют эти спецсимволы?

Такие символы нужно заключать в квадратные скобки:
Такие символы нужно заключать в квадратные скобки:
• like '5[_]' - будут выбираться строки, содержащие '5_', а не '51', '5a' и т.д.;
• like'ffff[%]' - будут выбираться строки, содержащие 'ffff%', а не 'ffffaaaa', 'ffff1' и т.д.;
• like 'MB_an[_]' - будут выбираться строки, содержащие 'MB'+ любой символ+'an_'.
• like '%[[]%' - будут выбираться строки, содержащие '['
• like '%]%' - будут выбираться строки, содержащие ']'
• like '%[[]]%' - будут выбираться строки, содержащие '[]'

(www.comp.udmnet.ru)

3. Как узнать длину текстового (text) или image- поля?

Нужно использовать функцию DATALENGTH, например:

select datalength(Tekst) from MBText

(www.comp.udmnet.ru)

2. Перемещение пользовательских баз данных SQL Server 7.0 в другое место.

Информация в этой статье относится к Microsoft SQL Server версии 7.0
Следующий пример перемещает базу данных, названную mydb, которая имеет один файл mydb.mdf и один журнал Mydblog.ldf.
Вы должны иметь единоличный доступ к перемещаемой базе данных.
Отсоедините базу данных следующим образом:

use master
go
sp_detach_db 'mydb'
go

Затем, скопируйте данные и журналы из текущего места расположения (D:Mssql7Data) в новое расположение (E:Sqldata).
Снова прикрепите базу данных, задав файлы в новом расположении следующим образом:

use master
go
sp_attach_db 'mydb','E:Sqldatamydbdata.mdf','E:Sqldatamydblog.ldf'
go

Проверите изменение расположения файлов, используя sp_helpfile:

use mydb
go
sp_helpfile
go

Присоединение баз данных для MS SQL Server 7.0

В MS SQL Server 7.0 объявилась нехорошая возможность - поднятие резервных копий базы данных и (или) присоединение базы данных другого сервера зачастую приводят к искажению информации о владельце базы. На практике это проявляется в невозможности выполнить на вновь присоединенной базе команду setuser 'dbo' сервер дампится.

Решение на удивление просто. Корень зла в сохранении внутри базы sid пользователя dbo со старого сервера. Соответственно решение исправить sid . Как пример:

Exec sp_configure -allow updates-, 1
Reconfigure with override
Go

Update sysusers set status = 2, sid = (select sid from master..sysusers where name = 'dbo') Where name = 'dbo'
Exec sp_configure -allow updates-, 0
Reconfigure with override
Go

(sql.ru)

1. Как правильно и удобно работать с датой?

Чтобы не зависеть ни от каких региональных настроек, дату надо задавать в виде YYYYMMDD без разделителей. Т.е. типа '20010528'. Это же рекомендует и Микрософт. На первый взгляд это выглядит не очень эстетично, но попробуй - тебе понравится!