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

Откуда:
Сообщений: 228
Ищу наилучшее решение для следующей ситуации. Может кто подскажет.

Программно выполняю некоторые запросы через ADO.
Например
1. select * from ... where ....database_name = '%s'.
2. backup database "%s" ...
и т.д.

в приведенных слячая по понятным причинам запросы для баз в имени которых содержатся символы " или ' не пройдут.
В случае ' SQL удваивает эти символы в ''.
В случае с " SQL запрос выполнится только если написать ["]

Может есть какой то общий способ? И верно все выше сказанное для всех версий SQL (я работаю на 2012)?
12 июн 12, 15:20    [12702643]     Ответить | Цитировать Сообщить модератору
 Re: TSQL запросы и спец символы в именах баз  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
BOL->QUOTENAME
12 июн 12, 15:30    [12702693]     Ответить | Цитировать Сообщить модератору
 Re: TSQL запросы и спец символы в именах баз  [new]
=Ozzy=
Member

Откуда:
Сообщений: 228
pkarklin
BOL->QUOTENAME

Не работает.
допустим у меня база называется '
теперь попробуйте с помощью этой функции привести её в нуное имя.
12 июн 12, 15:37    [12702721]     Ответить | Цитировать Сообщить модератору
 Re: TSQL запросы и спец символы в именах баз  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Все работает, для случая 2, где нужен корректный идентификатор объекта. А Ваш первый случай - это строковый литерал и его Вам придеться формировать самостоятельно или работать через database_id.
12 июн 12, 15:47    [12702780]     Ответить | Цитировать Сообщить модератору
 Re: TSQL запросы и спец символы в именах баз  [new]
=Ozzy=
Member

Откуда:
Сообщений: 228
pkarklin
Все работает, для случая 2, где нужен корректный идентификатор объекта. А Ваш первый случай - это строковый литерал и его Вам придеться формировать самостоятельно или работать через database_id.


Вот как раз мне и нужно избежать использования database_id
12 июн 12, 15:49    [12702795]     Ответить | Цитировать Сообщить модератору
 Re: TSQL запросы и спец символы в именах баз  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
=Ozzy=,

Вот сюда вот, откуда значение параметра передается?

select * from ... where ....database_name = '%s'.
12 июн 12, 15:54    [12702819]     Ответить | Цитировать Сообщить модератору
 Re: TSQL запросы и спец символы в именах баз  [new]
=Ozzy=
Member

Откуда:
Сообщений: 228
pkarklin
=Ozzy=,

Вот сюда вот, откуда значение параметра передается?

select * from ... where ....database_name = '%s'.


Из загруженного с помощью ADO запроса select * from sys.databases
12 июн 12, 16:19    [12702961]     Ответить | Цитировать Сообщить модератору
 Re: TSQL запросы и спец символы в именах баз  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Ну так загружайте database_id. А потом передавайте его как параметр и используйте QUOTENAME для получения корректного имени для BACKUP DATABASE.

CREATE DATABASE [']
GO

SELECT QUOTENAME(Name) FROM sys.databases WHERE database_id = 7

GO

DROP DATABASE [']


Сообщение было отредактировано: 12 июн 12, 16:34
12 июн 12, 16:27    [12703005]     Ответить | Цитировать Сообщить модератору
 Re: TSQL запросы и спец символы в именах баз  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
автор
select * from ... where ....database_name = '%s'.
Параметризованные запросы надо использовать, тогда не будет плясок с бубном.
12 июн 12, 16:41    [12703088]     Ответить | Цитировать Сообщить модератору
 Re: TSQL запросы и спец символы в именах баз  [new]
=Ozzy=
Member

Откуда:
Сообщений: 228
invm
автор
select * from ... where ....database_name = '%s'.
Параметризованные запросы надо использовать, тогда не будет плясок с бубном.


А можно примерчик, как правильно exec выполнить? И будет ли это коректно работать для баз со спец символами?
13 июн 12, 11:08    [12706274]     Ответить | Цитировать Сообщить модератору
 Re: TSQL запросы и спец символы в именах баз  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
=Ozzy=,

http://support.microsoft.com/kb/181734/en
13 июн 12, 11:18    [12706365]     Ответить | Цитировать Сообщить модератору
 Re: TSQL запросы и спец символы в именах баз  [new]
=Ozzy=
Member

Откуда:
Сообщений: 228
invm
=Ozzy=,

http://support.microsoft.com/kb/181734/en


Спасибо большое.
13 июн 12, 11:31    [12706457]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить