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

» Microsoft SQL Server

Автор: Megard
Дата сообщения: 18.07.2003 10:49
MICROSOFT SQL SERVER

тема посвящена выяснению ответов на вопросы, касающихся установки, функционирования и использования Microsoft SQL Server; также обсуждаются вопросы, касающиеся использования T-SQL (диалект SQL-языка, используемого в этой версии сервера)

популярные ответы на популярные вопросы "где скачать?" и "чем сломать?" можно найти здесь



Официальная документация:
SQL Server 2005 Books Online (original/english, 135MB, september 2007);
SQL Server 2005 Books Online (перевод/русский, 148MB, январь 2009);


Официальные обновления:
[для версий, начиная с 9.0.3042] / [полный перечень обновлений / зеркало]
03/06/2007: KB933508 (9.0.3042 > 9.0.3050);
04/03/2007: KB934458 (9.0.3050 > 9.0.3054);
04/03/2007: KB934459 (9.0.3054 > 9.0.3159);
06/28/2007: KB936305 (9.0.3159 > 9.0.3175);


Альтернативные источники информации:
sql.ru - очень полезный ресурс с говорящим за себя названием; пожалуй, лучший (если не единственный) на просторах ru'нета; кроме форумов есть большая подборка статей, FAQ, и прочее.
Автор: Bloody_Nokia_Adept
Дата сообщения: 18.07.2003 12:02
Megard

Цитата:
Можно ли сделать так, что бы запрос


Цитата:
не "переделывался"

MS SQL не переделывает запросы. Это оптимизатор может заменить эквисоединение на inner join, что суть есть одно и то же, однако сам текст запроса неизменен - это можно проверить по execution plan.

Можешь сказать какой тулзой пользуешься, просто я привык ходить на MS SQL через Query Analizer, а тот точно ничего подобного с запросами не выделывает.
Автор: Megard
Дата сообщения: 22.07.2003 14:29
Эта беда называется SQL Server Enterprise Manager
Автор: Kuzik
Дата сообщения: 22.07.2003 16:46
А когда он их переделывает... Никогда у меня не переделывал... А какой MS SQL?
Автор: v0yager
Дата сообщения: 23.07.2003 07:48
Kuzik


Цитата:
А когда он их переделывает... Никогда у меня не переделывал... А какой MS SQL?

Встроенный редактор запросов MS SQL Enterprise Manager переделывает тексты запросов, в том числе и запрос из первого поста. Этот редактор предназначен, в первую очередь, для визуального "построения запросов мышкой". Переформатирование же кода для визуальных редакторов совсем не редкость. (справка: для вызова встроенного редактора запросов - контекстное меню на таблице, Open Table/Query).

Megard
Свою задачу (редактирование запросов as-is без ненужной активности со стороны редактора) ты можешь решить с переходом на SQL Query Analyzer (входит в MS SQL 2K). Это не визуальный редактор, код тебе по своему усмотрению править не будет. Доступен object-browser через Tools/Object Browser/Show-Hide. Да и других вспомогательных средств хватает. И самое главное - никакой самодеятельности.
Автор: Megard
Дата сообщения: 23.07.2003 13:07
Спасибо, я понял.
Еще такой вопрос:
Я создаю новую базу, и там сразу появляются system tables, они для чего-то нужны или их сразу можно поудалять?
Автор: Bloody_Nokia_Adept
Дата сообщения: 23.07.2003 13:25
Megard

Цитата:
Я создаю новую базу, и там сразу появляются system tables, они для чего-то нужны или их сразу можно поудалять?

Слушай, а когда ты покупаешь комп с предустановленной системой, то тоже пытаешься ее замочить и потом мучаешься на raw device? Это же system tables, разве не понятно, что они нужны?!
Вот выдержка из BOL:

Цитата:
Each database in Microsoft SQL Server contains system tables that record the data needed by the SQL Server components. The successful operation of SQL Server depends on the integrity of information in the system tables; therefore, Microsoft does not support users who directly update information in the system tables.

Где твой здравый смысл был, когда задавался этот вопрос?
Сразу предупреждая следующий вопрос про базы данных и какие из них можно замочить:

Цитата:
System Databases and Data
Microsoft SQL Server systems have four system databases:

master
The master database records all of the system-level information for a SQL Server system. It records all login accounts and all system configuration settings. The master database records the existence of all other databases and the location of the primary files that contain the initialization information for the user databases. The master database records the initialization information for SQL Server; always have a recent backup of master available.

tempdb
The tempdb database holds all temporary tables and temporary stored procedures and fills any other temporary storage needs. The tempdb database is a global resource; the temporary tables and stored procedures for all users connected to the system are stored there. The tempdb database is re-created every time SQL Server is started so the system starts with a clean copy of the database. Because temporary tables and stored procedures are automatically dropped on disconnect, and no connections are active when the system is shut down, there is never anything in tempdb to be saved from one session of SQL Server to another.

The tempdb database grows automatically as needed. Each time the system is started, tempdb is reset to its default size. You can avoid the overhead of having tempdb grow automatically by using ALTER TABLE to increase the size of tempdb.

model
The model database is used as the template for all databases created on a system. When a CREATE DATABASE statement is issued, the first part of the database is created by copying in the contents of the model database, then the remainder of the new database is filled with empty pages. Because tempdb, which uses the model database, is created every time SQL Server is started, the model database must always exist on a SQL Server system.

msdb
The msdb database is used by SQL Server Agent for scheduling alerts and jobs and for recording operators.


Читай документацию по MS SQL!
Автор: v0yager
Дата сообщения: 23.07.2003 13:44
Megard

Удалить нельзя, подобные действия приведут базу данных в нерабочее состояние. В посте Bloody_Nokia_Adept об этом подробно написано.

Другое дело, что системные базы данных и системные объекты (в пользовательских базах) можно скрыть (с глаз долой...). Не удалить, а именно скрыть. Для этого в диалоговом окне "Registered SQL Server Properties" (контекстное меню на имени сервера, Edit SQL Server Registration Properties...) необходимо убрать checkbox напротив "Show system databases and system objects". Тогда системные объекты станут "бойцами невидимого фронта".
Автор: Megard
Дата сообщения: 24.07.2003 15:20
Ок, понятно.
Еще вопрос. В запросе типа:

select *
from customers
where rating in(select rating
from customers
where rating in (select rating
from customers
where rating=200))

сколько "уровней" вложенных подзапросов можно делать? Или это ни чем не ограничено?
Автор: Bloody_Nokia_Adept
Дата сообщения: 24.07.2003 15:37
Megard

Цитата:
сколько "уровней" вложенных подзапросов можно делать? Или это ни чем не ограничено?

В стандарте ограничений нет, а вообще-то зависит от конкретной реализации
Конкретно касаясь MS SQL (как я помню говорим о нем):

Цитата:
Multiple Levels of Nesting
A subquery can itself include one or more subqueries. Any number of subqueries can be nested in a statement.

This query finds the names of authors who have participated in writing at least one popular computer book.

USE pubs
SELECT au_lname, au_fname
FROM authors
WHERE au_id IN
(SELECT au_id
FROM titleauthor
WHERE title_id IN
(SELECT title_id
FROM titles
WHERE type = 'popular_comp'))

Here is the result set:

au_lname au_fname
---------------------------------------- --------------------
Carson Cheryl
Dull Ann
Locksley Charlene
Hunter Sheryl

(4 row(s) affected)


Когда сам начнешь доку читать???
Автор: Borduk
Дата сообщения: 26.07.2003 17:27
Bloody_Nokia_Adept


Цитата:
MS SQL не переделывает запросы. Это оптимизатор может заменить эквисоединение на inner join, что суть есть одно и то же, однако сам текст запроса неизменен - это можно проверить по execution plan.


Верно ли следующее утверждение: ... FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.KEY = TABLE2.KEY работает дольше, чем FROM TABLE1, TABLE2 WHERE TABLE1.KEY = TABLE2.KEY
Автор: MrZeRo
Дата сообщения: 29.07.2003 14:13
Borduk
Неверно. Производительность абслоютно одинаковая. Чтобы убедиться, можно посмотреть планы выполнения запросов и сравнить их в обоих случаях.
Автор: Borduk
Дата сообщения: 29.07.2003 21:00
MrZeRo
с Access-ом 97-м приходилось работать ?
Автор: MrZeRo
Дата сообщения: 30.07.2003 09:40
Borduk
Приходилось, только при небольших объемах данных.
Автор: Borduk
Дата сообщения: 31.07.2003 14:47
MrZeRo
Условие объединения ON (... AND ...) не поддерживается - или это у меня Access глючит ?
Т.е. запрос выполняется, но набор данных оне выдает неправильный
Автор: Megard
Дата сообщения: 31.07.2003 17:05
Такой вопрос: требуется подконектится к MS Sql серверу с помощью PHP.

Если сделать это так:

$myServer = "127.0.0.1";
$myUser = "sa";
$myPass = "";
$s = mssql_connect($myServer, $myUser, $myPass),

то все работает. Если заменить 127.0.0.1 на "нормальный" ip или на localhost. То "Couldn't connect to SQL Server"... В чем может быть дело?

Автор: MrZeRo
Дата сообщения: 01.08.2003 16:25
Borduk
Это не у тебя Access глючит, это он вообще так работает
Это неполноценная СУБД с неполноценно реализованным SQL. У меня тоже были проблемы с выполнением казалось бы правильно написанных запросов.
Попробуй переписать, например, с использованием конструкции UNION ALL, чтобы добавить нужные записи.
Автор: Borduk
Дата сообщения: 01.08.2003 18:09
MrZeRo


Цитата:
Попробуй переписать, например, с использованием конструкции UNION ALL, чтобы добавить нужные записи.


Вся привлекательность MS Access 97 была в кажущейся совместимости (полной) с MS Access 2.0 (конвертим базы и переписываем клиентов)

Так что лучше прыгать будем сразу на MS SQL

Спасибо огромное
Автор: Megard
Дата сообщения: 04.08.2003 12:58
Подскажите плз, как сделать представление, которое бы содержало все названия таблиц из базы данных?
Автор: v0yager
Дата сообщения: 05.08.2003 07:49
Megard

Для MS SQL такие представления уже есть. Префикс: INFORMATION_SCHEMA_...
С деталями можно ознакомиться в Books Online. Без системных представлений данные о таблицах базы данных можно извлечь из sysobjects.
Автор: Megard
Дата сообщения: 05.08.2003 14:55
Такой вопрос:
В Enterprise Manager пытаюсь удалиь строку из таблицы. Появлятся сообщение:"Key column information insufficient. Too many rows were affected by update."
Приходится удалять таблицу целиком. Что это за беда?
Автор: v0yager
Дата сообщения: 06.08.2003 07:28
Megard

Проверь наличие в таблице РК.
Автор: zorrack
Дата сообщения: 06.08.2003 13:38
Megard
Это означает, что Enterprise Manager не может идентифицировать запись (т.е. компоновка всех полей для нескольких записей дает один и тот же результат). Как результат, он не знает какую запись удалять. Выход - создать Identity колонку и потом уже удалять (и проблема, кстати, больше не появится).
Автор: Megard
Дата сообщения: 06.08.2003 14:32
Такой вопрос:

Из PHP делается запрос типа:

mssql_connect($myServer, $myUser, $myPass)

Если в Authetication указано "SQL Server and Windows", то все работает,
если переключить на "Windows only" то: "Warning: mssql_connect(): message: Login failed for user 'sa'. Reason: Not associated with a trusted SQL Server connection."

Какие права должны быть у учетной записи, что бы работало только с "Windows only"?
Автор: zsv
Дата сообщения: 20.08.2003 16:50
Как отключить журнал транзакций в MS SQL2000

Проблема: отвел под лог 500метров, запрос DELETE .. WHERE ... из большой таблицы 2млн записей по 80байт в записи минуты через две ругается, что лог заполнен.
Как отключить запись в лог в процессе выполнения команд.
Отвечайте по возможности на мыло zsv@hte.vl.net.ua
Автор: Bloody_Nokia_Adept
Дата сообщения: 21.08.2003 13:43
zsv

Цитата:
Как отключить журнал транзакций в MS SQL2000

Вроде бы никак
В Oracle можно указать не вносить информацию в transaction log, в MS SQL нет.


Цитата:
Проблема: отвел под лог 500метров, запрос DELETE .. WHERE ... из большой таблицы 2млн записей по 80байт в записи минуты через две ругается, что лог заполнен.

Если чистится вся таблица, то лучше применять truncate table. Если же нет, то можно сделать принудительный truncate log перед выполнением операции удаления.

Megard

Цитата:
Какие права должны быть у учетной записи, что бы работало только с "Windows only"?

Да никаких
Добавляешь в список логинов сервера пользователя домена или локального пользователя, говоришь об использовании аутентификации ОС, назначаешь ему default базу данных и добавляешь в какие тебе надо группы. Потом можешь еще в базу его добавить и назначить права доступа к объектам. При логине не указываешь ни имени, ни пароля (можешь и базу не указывать - будет default) - СУБД у ОС узнает текущего пользователя и проведет для него соединение с базой, если конечно она знает такого пользователя
Вот... Т.е. существуют два условия успешного соединения - пользователь должен войти в ОС и он должен быть известен СУБД.
Автор: Megard
Дата сообщения: 21.08.2003 14:44
Bloody_Nokia_Adept

Что-то из PHP не работает.

Допустим, у меня на сервере Windows 2000 имеется учетная запись vasia в группе users, c с паролем 123

Ставлю Authetication в Windows only
дальше запускаю mssql_connect("Server", "vasia", "123")

Получаю:
"Warning: mssql_connect(): message: Login failed for user 'vasa'. Reason: Not associated with a trusted SQL Server connection."
Автор: Bloody_Nokia_Adept
Дата сообщения: 21.08.2003 15:19
Megard

Цитата:
Что-то из PHP не работает

Так у тебя ж небось php работает от имени системы, а не от пользователя vasia?
Легко проверить - зайди под пользователем vasia в систему, запусти Query Analyzer и выбери в опциях входа Windows Authentification. Если войдешь, то так и есть - php запущен не от имени пользователя vasia и поэтому аутентификация ОС в СУБД не проходит. А то, что ты там пишешь логин/пароль до лампочки - это надо только в том случае, когда используется SQL Authentification, а ты сам для этого юзера поставил Windows Authentification. Вот так то...

Почему так принципиально использование Windows Authentification в php? Может лучше было бы делать все на SQL Authentification? Тогда пофигу было бы откуда и как заходит пользователь.
Автор: naPmu3aH
Дата сообщения: 21.08.2003 15:28
Bloody_Nokia_Adept

Цитата:
Вроде бы никак

Ну прям...
Database recovery model поставьте в simple и будет вам счастье... Правда бекаписться своевременно станет вашей головной болью
Автор: MrZeRo
Дата сообщения: 21.08.2003 15:48
naPmu3aH
проясни, как это сделать. я то же мнения, что Bloody_Nokia_Adept по этому вопросу. насколько мне известно, можно только установить "trunc. log on checkpoint", но это не отключает журнал транзакций, а только очищает по CheckPoint активные Entry в журнале транзакций

Страницы: 1234567891011121314151617181920212223242526272829

Предыдущая тема: Генератор 10-ти разрядных ключей


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