Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Microsoft SQL Server

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55

Открыть новую тему     Написать ответ в эту тему

Megard

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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, и прочее.

Всего записей: 135 | Зарегистр. 13-09-2002 | Отправлено: 11:49 18-07-2003 | Исправлено: niichavo, 16:13 02-04-2010
Megard

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такой вопрос:
В Enterprise Manager пытаюсь удалиь строку из таблицы. Появлятся сообщение:"Key column information insufficient. Too many rows were affected by update."  
Приходится удалять таблицу целиком. Что это за беда?  

Всего записей: 135 | Зарегистр. 13-09-2002 | Отправлено: 15:55 05-08-2003
v0yager



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Megard
 
Проверь наличие в таблице РК.

Всего записей: 95 | Зарегистр. 08-05-2003 | Отправлено: 08:28 06-08-2003
zorrack



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Megard
Это означает, что Enterprise Manager не может идентифицировать запись (т.е. компоновка всех полей для нескольких записей дает один и тот же результат). Как результат, он не знает какую запись удалять. Выход - создать Identity колонку и потом уже удалять (и проблема, кстати, больше не появится).

Всего записей: 244 | Зарегистр. 16-05-2003 | Отправлено: 14:38 06-08-2003
Megard

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такой вопрос:
 
Из 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"?

Всего записей: 135 | Зарегистр. 13-09-2002 | Отправлено: 15:32 06-08-2003
zsv

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как отключить журнал транзакций в MS SQL2000  
 
Проблема: отвел под лог 500метров, запрос DELETE .. WHERE ... из большой таблицы 2млн записей по 80байт в записи минуты через две ругается, что лог заполнен.
Как отключить запись в лог в процессе выполнения команд.
Отвечайте по возможности на мыло zsv@hte.vl.net.ua

Всего записей: 25 | Зарегистр. 20-08-2003 | Отправлено: 17:50 20-08-2003
Bloody_Nokia_Adept



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zsv

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

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

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

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

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

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

Всего записей: 785 | Зарегистр. 27-11-2002 | Отправлено: 14:43 21-08-2003
Megard

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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."  

Всего записей: 135 | Зарегистр. 13-09-2002 | Отправлено: 15:44 21-08-2003
Bloody_Nokia_Adept



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Megard

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

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

Всего записей: 785 | Зарегистр. 27-11-2002 | Отправлено: 16:19 21-08-2003
naPmu3aH



Из лесу вышел
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Bloody_Nokia_Adept

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

Ну прям...
Database recovery model поставьте в simple и будет вам счастье... Правда бекаписться своевременно станет вашей головной болью


----------
"Русские Доски" - сила! "Русские Доски" - класс! Кто не знает досок - тот сами догадайтесь кто

Всего записей: 4641 | Зарегистр. 30-10-2001 | Отправлено: 16:28 21-08-2003
MrZeRo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
naPmu3aH
проясни, как это сделать. я то же мнения, что Bloody_Nokia_Adept по этому вопросу. насколько мне известно, можно только установить "trunc. log on checkpoint", но это не отключает журнал транзакций, а только очищает по CheckPoint активные Entry в журнале транзакций

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 16:48 21-08-2003
Bloody_Nokia_Adept



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MrZeRo

Цитата:
но это не отключает журнал транзакций, а только очищает по CheckPoint активные Entry в журнале транзакций

Правильно говоришь
 
naPmu3aH

Цитата:
Ну прям...

Ай-ай-ай
Вот выдержка из BOL:

Цитата:
Simple Recovery
With the Simple Recovery model, the database can be recovered to the point of the last backup. However, you cannot restore the database to the point of failure or to a specific point in time. To do that, choose either the Full Recovery or Bulk-Logged Recovery model.
 
The backup strategy for simple recovery consists of:  
*Database backups.
*Differential backups (optional).  
 
Note  This model is similar to setting the trunc. log on chkpt. database option in Microsoft® SQL Server™ version 7.0 or earlier.

И тки мне пальцем в место, где говорится, что не используется transaction log? "trunc. log on chkpt." и не использование transaction log это суть есть разные вещи. Transaction log всегда используется MS SQL.
А Simple Recovery просто на просто не использует transaction log backup.

Всего записей: 785 | Зарегистр. 27-11-2002 | Отправлено: 16:56 21-08-2003
naPmu3aH



Из лесу вышел
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MrZeRo
Bloody_Nokia_Adept
Ну ладно, уговорили... Не совсем в тему ляпнул  
 
Я собственно имел в виду несколько другое (как это настроено у меня)...  
При recovery model = simple логи не занимают много места, т.к. удаляются после того как уже не нужны.... Именно поэтому у меня все логи стоят в 1мег с авторасширением (целостность данных не так важна как наличие самих данных - для тестирования наших продуктов). Т.е. отключить transaction logging таки нельзя, но таким способом можно решить описанную выше проблему, правда при выполнении еще некоторых условий (например свободного места на диске)

----------
"Русские Доски" - сила! "Русские Доски" - класс! Кто не знает досок - тот сами догадайтесь кто

Всего записей: 4641 | Зарегистр. 30-10-2001 | Отправлено: 17:19 21-08-2003
Bloody_Nokia_Adept



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
naPmu3aH

Цитата:
Ну ладно, уговорили...

Хорошо, что хоть отпираться не стал, а то пришлось бы аргументировать тяжелыми металлическими предметами

Цитата:
Т.е. отключить transaction logging таки нельзя, но таким способом можно решить описанную выше проблему, правда при выполнении еще некоторых условий (например свободного места на диске)

То же не факт
Я сразу предложил как вариант делать принудительный truncate log перед выполнением операции удаления, однако если предположить, что транзакция между check point'ами наделает таки в логе на 500 мегов, то тут уж селяви... Тут действительно желательно либо отключение использования transaction log для какой-то конкретной операции (что похоже невозможно сделать), либо пойти на увеличение размера файла логов на случай больших операций.

Всего записей: 785 | Зарегистр. 27-11-2002 | Отправлено: 17:58 21-08-2003
zsv

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

 
Спасибо. Поборол.
Пришлось увеличить лог в два раза. Плюс к этому перед удалением пришлось удалить все индексы к таблице. При наличии индексов для этой операции вообще места на диске ненапастись, прожорливая софтина.
 
Еще вопросик в догонку.
К конструкции UPDATE qq SET .... FROM qq INNER JOIN ww ON qq.x=ww.x WHERE qq.y=...
Какой индекс к таблице qq сильнее ускорит операцию по y,x или x,y

Всего записей: 25 | Зарегистр. 20-08-2003 | Отправлено: 09:02 22-08-2003
Bloody_Nokia_Adept



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zsv

Цитата:
Пришлось увеличить лог в два раза

Слова не юноши, но мужа

Цитата:
Какой индекс к таблице qq сильнее ускорит операцию по y,x или x,y

По идее x/y, т.к. в INNER JOIN сначала работает условие ON, а потом лишь WHERE. В этом случае порядок использования будет именно x/y и должен подхватиться этот индекс. Однако мое ИМХО говорит мне, что я бы использовал не составной индекс, а два простых по x и y
А вообще-то сними план запроса и сам все посмотри

Всего записей: 785 | Зарегистр. 27-11-2002 | Отправлено: 10:52 22-08-2003
deaddragon



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста. что-то не могу найти в документации.
 
С какими правами заускается триггер в SQL Server. С правами пользователя который его создал или с правами пользователя при котором триггер выполняется?

Всего записей: 2 | Зарегистр. 20-08-2003 | Отправлено: 11:06 22-08-2003
MrZeRo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zsv
Оптимизатор запросов MS SQL при необходимости сам выстраивает временный индекс для выполнения запроса, если, по его мнению, это ускорит его выполнение, в плане запроса жто видно. Если ты заметил, что такой индекс в плане запроса есть, для ускорения можно сделать его постоянным.

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 12:12 22-08-2003
Bloody_Nokia_Adept



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
deaddragon

Цитата:
С какими правами заускается триггер в SQL Server.

Вот что написано в BOL:

Цитата:
CREATE TRIGGER
Creates a trigger, which is a special kind of stored procedure that executes automatically when a user attempts the specified data-modification statement on the specified table.


Цитата:
Permissions
CREATE TRIGGER permissions default to the table owner on which the trigger is defined, the sysadmin fixed server role, and members of the db_owner and db_ddladmin fixed database roles, and are not transferable.
 
To retrieve data from a table or view, a user must have SELECT statement permission on the table or view. To update the content of a table or view, a user must have INSERT, DELETE, and UPDATE statement permissions on the table or view.
 
If an INSTEAD OF trigger exists on a view, the user must have INSERT, DELETE, and UPDATE privileges on that view to issue INSERT, DELETE, and UPDATE statements against the view, regardless of whether the execution actually performs such an operation on the view.

Итак, видим что триггер - особый вид хранимой процедуры, а они как известно выполняются с правами создателя (это в Oracle можно указать на запуск с правами исполнителя).
 
Это легко проверить.
Этот код выполняется от имени sa:

Цитата:
use northwind  
go
create table test_table (i int)
go
create procedure test_proc as print '<<< test_proc >>>'
go
create trigger test_trig on test_table for insert as exec test_proc
go
 
exec sp_addlogin 'test_user', '', 'northwind'
go
exec sp_adduser 'test_user'
go
grant select, insert on test_table to test_user
go


Цитата:
New login created.
Granted database access to 'test_user'.

Этот код выполняется от имени test_user:

Цитата:
exec test_proc;
select * from test_table;
insert into test_table values(1);


Цитата:
Server: Msg 229, Level 14, State 5, Procedure test_proc, Line 1
EXECUTE permission denied on object 'test_proc', database 'Northwind', owner 'dbo'.
i            
-----------  
 
(0 row(s) affected)
 
<<< test_proc >>>
 
(1 row(s) affected)

 
Вроде бы все наглядно показал

Всего записей: 785 | Зарегистр. 27-11-2002 | Отправлено: 08:39 23-08-2003
zsv

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно ли переместить файлы базы данных *.mdf, *.ldf на другой диск и как потом их подключить к серверу, если нельзя, то как мне переместить существующую базу в другое место

Всего записей: 25 | Зарегистр. 20-08-2003 | Отправлено: 17:06 27-08-2003
naPmu3aH



Из лесу вышел
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zsv

Цитата:
Можно ли переместить файлы базы данных *.mdf, *.ldf на другой диск и как потом их подключить к серверу

sp_deatach_db/sp_atach_db


----------
"Русские Доски" - сила! "Русские Доски" - класс! Кто не знает досок - тот сами догадайтесь кто

Всего записей: 4641 | Зарегистр. 30-10-2001 | Отправлено: 17:49 27-08-2003
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Microsoft SQL Server


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru