Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
redwhite90
Member

Откуда:
Сообщений: 1907
Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?
Но сама база должна остаться
23 сен 13, 12:44    [14872107]     Ответить | Цитировать Сообщить модератору
 Re: Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
redwhite90
Member

Откуда:
Сообщений: 1907
таблички удалились даже. чтобы осталась только созданная пустая база без ничего.

Если я правильно понимаю это называется - надо удалить текущую схему
23 сен 13, 12:49    [14872151]     Ответить | Цитировать Сообщить модератору
 Re: Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4424
DROP DATABASE
CREATE DATABASE
23 сен 13, 12:54    [14872191]     Ответить | Цитировать Сообщить модератору
 Re: Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
redwhite90
Member

Откуда:
Сообщений: 1907
SQL2008,

DROP DATABASE


удаляет базу целиком. а мне надо только все таблички с данными
23 сен 13, 13:06    [14872272]     Ответить | Цитировать Сообщить модератору
 Re: Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31868
redwhite90
чтобы осталась только созданная пустая база без ничего.
Без ничего или без табличек?
Определитесь, что должно остаться в базе, и пишите скрипт, который удалит остальное (если вообще ничего не нужно, включая файлгруппы и пользователей, то лучше действительно DROP DATABASE)
23 сен 13, 13:06    [14872274]     Ответить | Цитировать Сообщить модератору
 Re: Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
Прогер_самоучка
Member

Откуда:
Сообщений: 68957
Скорее всего ТС хочет удалить только данные, сохранив всю структуру базы
23 сен 13, 13:12    [14872314]     Ответить | Цитировать Сообщить модератору
 Re: Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
redwhite90
Member

Откуда:
Сообщений: 1907
alexeyvg,

таблички должны удалиться!


ну просто у меня в программе используется подключение к бд с определнным юзером. Если я дропну всю базу целиком и создам заново, то боюсь прав у него не будет на эту базу. я знаю где это мышкой всё натыкать, а через sql команду - нет
23 сен 13, 13:12    [14872320]     Ответить | Цитировать Сообщить модератору
 Re: Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
Прогер_самоучка
Member

Откуда:
Сообщений: 68957
redwhite90
то боюсь прав у него не будет на эту базу. я знаю где это мышкой всё натыкать, а через sql команду - нет

 GRANT
23 сен 13, 13:14    [14872334]     Ответить | Цитировать Сообщить модератору
 Re: Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2407
redwhite90,

скрипт, получает все имена существующих таблиц, и грохает их по очереди

но, действительно, изучить команду GRANT кошернее
23 сен 13, 13:23    [14872390]     Ответить | Цитировать Сообщить модератору
 Re: Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
redwhite90
Member

Откуда:
Сообщений: 1907
StarikNavy,

констрэинты не позволят так сделать.


а по повожу гранта покажете как создать базу с правами определенного юзверя??
23 сен 13, 13:29    [14872436]     Ответить | Цитировать Сообщить модератору
 Re: Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
redwhite90
констрэинты не позволят так сделать.

Позволят, если удалять таблицы в правильном порядке. Или если перед удалением таблиц удалить все foreign key'и.

redwhite90
а по повожу гранта покажете как создать базу с правами определенного юзверя??

USE ВашаБД;
GO
CREATE USER Вася FOR LOGIN Вася;
GO
EXEC sp_addrolemember N'db_owner', N'Вася';
23 сен 13, 13:39    [14872500]     Ответить | Цитировать Сообщить модератору
 Re: Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
redwhite90
Member

Откуда:
Сообщений: 1907
Гость333,

А что есть логин и что есть юзер?
23 сен 13, 13:49    [14872558]     Ответить | Цитировать Сообщить модератору
 Re: Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
redwhite90
А что есть логин и что есть юзер?

Логин — это сущность уровня инстанса (экземпляра) SQL Server. Обеспечивает возможность подключения к экземпляру сервера, не гарантируя возможность подключения к какой-то конкретной БД (кроме master и tempdb — к ним подключиться можно всегда). Логину выдаются разрешения уровня экземпляра (например, права на создание БД, права на запуск трассировки и т.д.).

Юзер — это сущность уровня конкретной БД. Именно юзеру выдаются разрешения на обращение к конкретным объектам БД (таблицы, хранимые процедуры и т.д.). Если для какого-либо логина в какой-либо БД не будет создан юзер, то этот логин будет иметь в БД права юзера guest (т.е., по умолчанию, самые минимальные права). А чтобы юзер имел полные права в БД, он должен быть членом роли db_owner.
23 сен 13, 14:06    [14872668]     Ответить | Цитировать Сообщить модератору
 Re: Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
HelenM
Member

Откуда: Москва
Сообщений: 53
redwhite90,

не понятна формулировка "таблички вместе с содержимым"

удалить таблички (вместе с содержимым) - drop

очистить содержимое табличек - truncate
23 сен 13, 14:37    [14872948]     Ответить | Цитировать Сообщить модератору
 Re: Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
redwhite90
Member

Откуда:
Сообщений: 1907
Гость333
redwhite90
констрэинты не позволят так сделать.

Позволят, если удалять таблицы в правильном порядке. Или если перед удалением таблиц удалить все foreign key'и.

redwhite90
а по повожу гранта покажете как создать базу с правами определенного юзверя??

USE ВашаБД;
GO
CREATE USER Вася FOR LOGIN Вася;
GO
EXEC sp_addrolemember N'db_owner', N'Вася';


пишу
CREATE DATABASE hhsystemTest 

потом

USE hhsystemTest;
GO
CREATE USER userNew FOR LOGIN userNew;
GO
EXEC sp_addrolemember N'db_owner', N'userNew';


вижу:
Msg 15063, Level 16, State 1, Line 1
У данного имени входа уже есть учетная запись с другим именем пользователя.
Msg 15410, Level 11, State 1, Procedure sp_addrolemember, Line 35
Пользователь или роль "userNew" отсутствует в этой базе данных.
23 сен 13, 15:03    [14873152]     Ответить | Цитировать Сообщить модератору
 Re: Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
redwhite90
Member

Откуда:
Сообщений: 1907
Понял, что если зайти под этим юзером и создать под ним базу, то права owner у юзера будут.

но постоянно вылетает ошибка
Невозможно удалить базу данных "hhsystemTest", так как она используется в данный момент.


можно как-то убить все процессы, использующие базу?
23 сен 13, 15:11    [14873212]     Ответить | Цитировать Сообщить модератору
 Re: Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
redwhite90,

Если вы создали БД, залогинившись как userNew, то этот логин будет автоматически замаплен на пользователя dbo. Проверить можно так:

select suser_sname(sid) as [login], name as [user]
from sys.database_principals
where sid = suser_sid(N'userNew')

Пользователь dbo уже обладает всеми правами на базу, никаких дополнительных телодвижений совершать не надо.
23 сен 13, 15:12    [14873224]     Ответить | Цитировать Сообщить модератору
 Re: Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
redwhite90
Невозможно удалить базу данных "hhsystemTest", так как она используется в данный момент.


можно как-то убить все процессы, использующие базу?

use master;
go
alter database hhsystemTest set single_user with rollback immediate;
go
drop database hhsystemTest;
go
23 сен 13, 15:15    [14873240]     Ответить | Цитировать Сообщить модератору
 Re: Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
redwhite90
Member

Откуда:
Сообщений: 1907
Гость333,

спасибо - рабоает, а что за таинственный высший мастер?
23 сен 13, 15:43    [14873415]     Ответить | Цитировать Сообщить модератору
 Re: Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
mensh
Member

Откуда: Пермь
Сообщений: 46
redwhite90 ,

master - системная база SQL сервер.
В ней хранятся важные представления каталога и важные системные процедуры.

Если вызвать "alter database hhsystemTest" в контексте самой базы "hhsystemTest" полагаю может не сработать. Правильно позвать alter database находясь в контексте базы master.
23 сен 13, 15:49    [14873459]     Ответить | Цитировать Сообщить модератору
 Re: Какую написать команду чтобы очистились все таблички в бд вместе с содержимым?  [new]
Прогер_самоучка
Member

Откуда:
Сообщений: 68957
redwhite90
Гость333,

спасибо - рабоает, а что за таинственный высший мастер?


Напомнило анекдот:
-Всё, пацаны, у меня есть такой вирус, такой вирус. Дайте мне чей-нибудь ip
- 127.0.0.1
-Ну всё паря, ты попал! Сейчас я
***пользователь не в сети ***

По сабжу. Это база стандартная такая.
23 сен 13, 15:52    [14873478]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить