|
|
|
antibiotik28 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 19.2.2016 Репутация: нет Всего: нет |
Привет всем !
Помогите с вопросом ! Как я могу создать базу через запрос SQL в компоненте Query ! Create DATABASE не работает до тех пор пока я на самом SQL сервере не создам оболочку этой базы, пустую базу ! Ведь при подключении Query требуется указать саму базу ! А если таковой пока нету ? Приходится сначала на сервере SQL создать пустую БД, потом подключить к этой базе Query и только потом делать CREATE TABLE ! Как мне решить этот вопросс ? Спасибо !!! |
|||
|
||||
Garmahis |
|
|||
Опытный Профиль Группа: Участник Сообщений: 254 Регистрация: 23.12.2004 Репутация: нет Всего: 4 |
Google подсказывает
Но вообще при таких вопросах надо уточнять про какой SQL сервер идет речь. Кроме того если говорить про MS SQL надо смотреть под каким пользователем вы пытаетесь выполнить запрос на создание. У пользователя может не быть прав на такую операцию. Это сообщение отредактировал(а) Garmahis - 2.12.2016, 13:08 |
|||
|
||||
antibiotik28 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 19.2.2016 Репутация: нет Всего: нет |
MS SQL Server 2005 версия Express
Пользователь имеет полные права ! Server Roles =sysadmin Спасибо тебе за подсказки ! |
|||
|
||||
Garmahis |
|
|||
Опытный Профиль Группа: Участник Сообщений: 254 Регистрация: 23.12.2004 Репутация: нет Всего: 4 |
В MS SQL Server Management Studio подключись под этим пользователем к базе и попробуй выполнить CREATE DATABASE TestDB если база создастся переходи к дельфе. Если от туда по прежнему не создается используй профайлер. Для просмотра выполнения запроса.
|
|||
|
||||
antibiotik28 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 19.2.2016 Репутация: нет Всего: нет |
Привет!
Спасибо за наставление! Использовал твой код, переделал немного переменные. Стал вопрос о поиске работающего sql сервера в локальной сети, на котором есть определённая база, (имеется 100% правильное имя базы) при этом имеются используемые этими серверами порты например 1111или 2222. Выполнить подключение к серверу и этой базе. Полазив по форумах понял что есть в делфи компонент indy но работает медленно, хотя лок сети предполагают быть небольшими до 25 ip. Как можно реализовать, какие компоненты ползать? |
|||
|
||||
antibiotik28 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 19.2.2016 Репутация: нет Всего: нет |
Озадачился перед новым годом блин!
На представительствах, которых около 100 на сервере с базами надо заделать бкап бази, потом создать пустую и туда развернуть этот бкап и дать имя с использованием 2016 это будет полная база за 2016год. А в той базе из которой снимали образ, почистить некоторые таблицы. Это будет рабочая база за 2017год. Потом на всех киентских компах в dbe administrator настроить подключения к этим двум базам, на других клиентских програмах тоже настроить Алисы на эти базы. Это все надо заделать после окончания последнего рабочего дня 2016 года. По рдп вручную я буду парится очень и очень долго. |
|||
|
||||
Garmahis |
|
|||
Опытный Профиль Группа: Участник Сообщений: 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( ИмяФайлаЛога, ЖелаемыйРазмер ) |
|||
|
||||
antibiotik28 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 19.2.2016 Репутация: нет Всего: нет |
Просто прогу разослал всем и сказал запустите вот этот файл ! На любом компе из сети в которой и вертится SQL база ! И все !
Нажатие одной кнопки "выполнить' сделает весь процесс ! И тем более надо сделать невозможным повторную перезапись образа или востановления ! Чтобы не допустить случайное переписывание очищеной базой ! Если кто то надумается повторно запустить прогу ! Скрипт тоже надо транслировать всем ! Да в скриптах не силен ! Скрипт надо запускать именно на самом сервере, хотя я не уверен, не просто в сети где стоит сервер. Сервер стоит без клавы и монитора сами юзеры этого не сделают ! А конектится самому на все 100 серверов это муторно ! Да и если где то не сработает то проще помочь на одном или пару тройке компов , раньше делали все вручную на всех представительствах ! И почему прога не заработает на всех представительствах ? Везде стоит 1 SQL Server 2005 2 Порты прописаны 1111 или 2222 других не используем 3 Имя базы используем в обязательном порядке 'express' Единственный пока вопрос это свободное место на диске С: И немного затрудняет вопрос по- невозможности еще раз перебекапить и востановить с уже очищеной базы ! Это сообщение отредактировал(а) antibiotik28 - 5.12.2016, 13:35 |
|||
|
||||
Garmahis |
|
|||
Опытный Профиль Группа: Участник Сообщений: 254 Регистрация: 23.12.2004 Репутация: нет Всего: 4 |
Ну смотри Я не знаю насколько жестко идет администрирование в ваших сетях, но по сути программе надо получить список всех ip убедиться что там расшарены порты 1111 или 2222. Скорее всего они открыты на всех машинах. Далее для каждого ip вы пытаетесь подключиться к серверу. Стандартный таймаут запроса 30 секунд. Если возвращает таймаут то переходите к следующему порта или следующего ip. таким образом на проверку каждого ip уходит 1 минута. Так нашли сервер куда подключились. Я даже не рассматриваю ситуацию когда еще на каком-то компе в сети стоит другой sql server. Допустим правильный сервер единственный в вашей сети. Дальше вы проверяете наличие нужно базы данных. А что делать если на сервере несколько баз с именем 'express'? Вы уверены что на всех 100 серверах это так? Допустим да вы запускаете бекап. Как вы гарантируете что по адресу бекапа будет достаточно места? Опять же замечу что хоть в пишите что не сильны в скриптах но вам точно так же надо писать этот же самый скрипт только вы его будете вызывать из дельфи. Кроме того простите судя по вашим вопросам и в дельфи вы тоже не очень сильны. Боюсь что вы потратете больше времени на написание программы чем на ручное выполнение всего этого.
Дальше вы создаете новую базу. и пытаетесь развернуть бекап. Опять кто гарантирует что места на диске хватит? Так же не известно сколько еще может возникнуть ошибок при удалении данных из таблиц. Какие индексы это затронет и тд. |
|||
|
||||
_zorn_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
Скриптом. Дети винды страдают... Добавлено через 5 минут и 23 секунды Ну ёпта, ну все же уже придумано для этого. Ну подними ты свою жопень. Ну в яндексе набери. |
|||
|
||||
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |