Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SQL Запрос на создание Базы Данных, SQL Запрос на создание Базы Данных 
:(
    Опции темы
antibiotik28
  Дата 2.12.2016, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 19.2.2016

Репутация: нет
Всего: нет



Привет всем !
Помогите с вопросом ! Как я могу создать базу через запрос SQL в компоненте Query !
Create DATABASE не работает до тех пор пока я на самом SQL сервере не создам оболочку этой базы, пустую базу ! Ведь при подключении Query требуется указать саму базу ! А если таковой пока нету ?
Приходится сначала на сервере SQL создать пустую БД, потом подключить к этой базе Query и только потом делать CREATE TABLE !
Как мне решить этот вопросс ?
Спасибо !!!


PM MAIL   Вверх
Garmahis
Дата 2.12.2016, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 23.12.2004

Репутация: нет
Всего: 4



Google подсказывает smile
Код

procedure CreateSQLBase;
var myADO : TADOQuery;
NameSQLBase,NameSQLTable,NameSQLServer : string;
 
begin
myADO:=TADOQuery.Create(self);
myADO.ConnectionString:='Provider=SQLOLEDB.1;'+
'Integrated Security=SSPI;'+
'Persist Security Info=False;'+
'Data Source='+NameSQLServer;
myADO.SQL.Clear;
myADO.SQL.Text:='CREATE DATABASE '+NameSQLBase;
try
myADO.ExecSQL;
except
ShowMessage('База данных с именем: "'+NameSQLBase+'" - уже существует...');
end;
myADO.Free;
end;


Но вообще при таких вопросах надо уточнять про какой SQL сервер идет речь.
Кроме того если говорить про MS SQL надо смотреть под каким пользователем вы пытаетесь выполнить запрос на создание. У пользователя может не быть прав на такую операцию. 

Это сообщение отредактировал(а) Garmahis - 2.12.2016, 13:08
PM   Вверх
antibiotik28
Дата 2.12.2016, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 19.2.2016

Репутация: нет
Всего: нет



MS SQL Server 2005 версия Express
Пользователь имеет полные права !
Server Roles =sysadmin
Спасибо тебе за подсказки !
PM MAIL   Вверх
Garmahis
Дата 2.12.2016, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 23.12.2004

Репутация: нет
Всего: 4



В MS SQL Server Management Studio подключись под этим пользователем к базе и попробуй выполнить CREATE DATABASE TestDB если база создастся переходи к дельфе. Если от туда по прежнему не создается используй профайлер. Для просмотра выполнения запроса. 
PM   Вверх
antibiotik28
Дата 3.12.2016, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 19.2.2016

Репутация: нет
Всего: нет



Привет! 
Спасибо за наставление! 
Использовал твой код,  переделал немного переменные. 
Стал вопрос  о поиске работающего sql сервера в локальной сети, 
на котором есть определённая база, (имеется 100% правильное имя базы) при этом имеются используемые этими серверами порты например 1111или 2222.
Выполнить подключение к серверу и этой базе. 
Полазив по форумах понял что есть в делфи компонент indy но работает медленно,  хотя лок сети предполагают быть небольшими до 25 ip.  Как можно реализовать, какие компоненты ползать? 

PM MAIL   Вверх
antibiotik28
Дата 3.12.2016, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 19.2.2016

Репутация: нет
Всего: нет



Озадачился перед новым годом блин! 
На представительствах,  которых около 100 на сервере с базами надо заделать бкап бази,  потом создать пустую и туда развернуть этот бкап и дать имя с использованием 2016 это будет полная база за 2016год. А в той базе из которой снимали образ, почистить некоторые таблицы. Это будет рабочая база за 2017год.
Потом на всех киентских компах в dbe administrator настроить подключения к этим двум базам,  на других клиентских програмах тоже настроить Алисы на эти базы. Это все надо заделать после окончания последнего рабочего дня 2016 года. По рдп вручную я буду парится очень и очень долго. 


PM MAIL   Вверх
Garmahis
Дата 5.12.2016, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 23.12.2004

Репутация: нет
Всего: 4



Я не совсем понимаю зачем делать программу на дельфе. Вам все равно придется вашу программу транслировать на все 100 филиалов и запускать там. Тем более что при таком количестве серверов ни один скрипт не выдержет испытание реальностью и то что работает на 99 базах из-за разных причин загнется на 100. Я рекомендую написать скрипт и просто его запускать на всех серверах. Сервер у вас 2005. Значит нужна следующая последовательность:
1. Бекапим старую базу
    https://msdn.microsoft.com/ru-ru/library/ms...(v=sql.90).aspx
2. Создаем новую CREATE DATABASE Work2017
3. Ресторим
    https://msdn.microsoft.com/ru-ru/library/ms...(v=sql.90).aspx
4. Удаляяем из стаблиц старые данные. Тут я думаю вопросов нет.
5. Теперь прибиваем лишнее в логах что бы база не занимала дофига
DBCC SHRINKFILE( ИмяФайлаЛога,  ЖелаемыйРазмер )
PM   Вверх
antibiotik28
Дата 5.12.2016, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 19.2.2016

Репутация: нет
Всего: нет



Просто прогу разослал всем  и сказал запустите вот этот файл ! На любом компе из сети в которой и вертится SQL база ! И все !
Нажатие одной кнопки "выполнить' сделает весь процесс ! И тем более надо сделать невозможным повторную перезапись образа или востановления ! Чтобы не допустить 
случайное переписывание очищеной  базой !  Если кто то надумается повторно запустить прогу !
Скрипт тоже надо транслировать всем ! Да  в скриптах не силен ! 
Скрипт надо запускать именно на самом  сервере, хотя я не уверен, не просто в сети где стоит сервер. Сервер стоит без клавы и монитора сами юзеры этого не сделают !
А конектится самому на все 100 серверов это муторно ! 
Да и если где то не сработает то проще помочь на одном или пару тройке компов , раньше делали все вручную на всех представительствах  smile !
И почему прога не заработает на всех представительствах ?
Везде стоит
1 SQL Server 2005
2 Порты прописаны 1111 или 2222 других не используем
3 Имя базы используем в обязательном порядке 'express'
Единственный пока вопрос это свободное место на диске С:
И немного затрудняет вопрос по-  невозможности еще раз перебекапить и востановить с уже очищеной базы !



Это сообщение отредактировал(а) antibiotik28 - 5.12.2016, 13:35
PM MAIL   Вверх
Garmahis
Дата 5.12.2016, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 23.12.2004

Репутация: нет
Всего: 4



Ну смотри Я не знаю насколько жестко идет администрирование в ваших сетях, но по сути программе надо получить список всех ip убедиться что там расшарены порты 1111 или 2222. Скорее всего они открыты на всех машинах. Далее для каждого ip вы пытаетесь подключиться к серверу. Стандартный таймаут запроса 30 секунд. Если возвращает таймаут то переходите к следующему порта или следующего ip. таким образом на проверку каждого ip уходит 1 минута. Так нашли сервер куда подключились. Я даже не рассматриваю ситуацию когда еще на каком-то компе в сети стоит другой sql server. Допустим правильный сервер единственный в вашей сети. Дальше вы проверяете наличие нужно базы данных. А что делать если  на сервере несколько баз с именем 'express'? Вы уверены что на всех 100 серверах это так? Допустим да вы запускаете бекап. Как вы гарантируете что по адресу бекапа будет достаточно места? Опять же замечу что хоть в пишите что не сильны в скриптах но вам точно так же надо писать этот же самый скрипт только вы его будете вызывать из дельфи. Кроме того простите судя по вашим вопросам и в дельфи вы тоже не очень сильны. Боюсь что вы потратете больше времени на написание программы чем на ручное выполнение всего этого.
Дальше вы создаете новую базу. и пытаетесь развернуть бекап. Опять кто гарантирует что места на диске хватит? Так же не известно сколько еще может возникнуть ошибок при удалении данных из таблиц. Какие индексы это затронет и тд.
PM   Вверх
_zorn_
Дата 8.12.2016, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Цитата(antibiotik28 @  2.12.2016,  16:40 Найти цитируемый пост)
Приходится сначала на сервере SQL создать пустую БД, потом подключить к этой базе Query и только потом делать CREATE TABLE !
Как мне решить этот вопросс ?

Скриптом. Дети винды страдают...

Добавлено через 5 минут и 23 секунды
Цитата(antibiotik28 @  5.12.2016,  20:31 Найти цитируемый пост)
А конектится самому на все 100 серверов это муторно ! 

Ну ёпта, ну все же уже придумано для этого. Ну подними ты свою жопень. Ну в яндексе набери.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1295 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.