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

Откуда:
Сообщений: 243
Чем чревато такое изменение в строке подключения для SQL 2005+? В приложении используются ADO компоненты для коннекта к серверу баз данных. Какие еще изменения необходимы, для сохранения работоспособности кода? Потому как простая замена SQLOLEDB.1 на SQLNCLI в строке подключения и запуск приложения показали его работоспособность, однако хотелось бы знать, нет ли каких-то "подводных камней" в такой замене.
Заранее спасибо.
29 ноя 11, 17:19    [11679257]     Ответить | Цитировать Сообщить модератору
 Re: Provider=SQLOLEDB.1 vs Provider=SQLNCLI  [new]
harisma
Member

Откуда:
Сообщений: 243
И еще. У меня приложение раньше использовало провайдера SQLOLEDB.1 и коннекты к базе осуществлялись через ADO.
Теперь я хочу разрешить приложению использовать MARS. Для этого я и хочу поменять провайдера на SQLNCLI (если коннект к SQL 2005) или на SQLNCLI10 (если коннект к SQL 2008). Но по документации на MARS, он может активироваться 3 способами в зависимости от поставщика: MarsConn = yes/no; MARS Connection = True/False; или MultipleActiveResultSets=True/False. Так вот вопрос: который из способов подходит для моего случая?
29 ноя 11, 17:59    [11679518]     Ответить | Цитировать Сообщить модератору
 Re: Provider=SQLOLEDB.1 vs Provider=SQLNCLI  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
harisma
Чем чревато такое изменение в строке подключения для SQL 2005+? В приложении используются ADO компоненты для коннекта к серверу баз данных. Какие еще изменения необходимы, для сохранения работоспособности кода? Потому как простая замена SQLOLEDB.1 на SQLNCLI в строке подключения и запуск приложения показали его работоспособность, однако хотелось бы знать, нет ли каких-то "подводных камней" в такой замене.
Заранее спасибо.


в общем-то нет.

SQLNCLI дает дополнительные возможности, например указание сервера, к которому нужно автматически подключить приложение, если основной недоступен, т.е. "кластер для бедных"
29 ноя 11, 21:00    [11680187]     Ответить | Цитировать Сообщить модератору
 Re: Provider=SQLOLEDB.1 vs Provider=SQLNCLI  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
harisma
И еще. У меня приложение раньше использовало провайдера SQLOLEDB.1 и коннекты к базе осуществлялись через ADO.
Теперь я хочу разрешить приложению использовать MARS. Для этого я и хочу поменять провайдера на SQLNCLI (если коннект к SQL 2005) или на SQLNCLI10 (если коннект к SQL 2008). Но по документации на MARS, он может активироваться 3 способами в зависимости от поставщика: MarsConn = yes/no; MARS Connection = True/False; или MultipleActiveResultSets=True/False. Так вот вопрос: который из способов подходит для моего случая?


http://www.connectionstrings.com/
29 ноя 11, 21:01    [11680191]     Ответить | Цитировать Сообщить модератору
 Re: Provider=SQLOLEDB.1 vs Provider=SQLNCLI  [new]
harisma
Member

Откуда:
Сообщений: 243
Спасибо за ответы.
30 ноя 11, 11:15    [11681872]     Ответить | Цитировать Сообщить модератору
 Re: Provider=SQLOLEDB.1 vs Provider=SQLNCLI  [new]
harisma
Member

Откуда:
Сообщений: 243
Таки скрытые подводные камни оказались :( После такой замены появились странные сообщения об ошибках, которых ранее не было:

- Invalid date format
- A transaction that was started in a MARS batch is still active at the end of the batch. The transaction is rolled back
- TClientDataSet must apply updates before refreshing data
и т. д. Так что замена SQLOLEDB на SQLNCLI10 (SQLNCLI) таки неравноценна.
30 ноя 11, 13:22    [11682949]     Ответить | Цитировать Сообщить модератору
 Re: Provider=SQLOLEDB.1 vs Provider=SQLNCLI  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
harisma
Таки скрытые подводные камни оказались :( После такой замены появились странные сообщения об ошибках, которых ранее не было:

- Invalid date format
- A transaction that was started in a MARS batch is still active at the end of the batch. The transaction is rolled back
- TClientDataSet must apply updates before refreshing data
и т. д. Так что замена SQLOLEDB на SQLNCLI10 (SQLNCLI) таки неравноценна.


не должно быть такой фигни

исследуйте код, возможно старый провайдер не был так строг.
30 ноя 11, 15:24    [11684090]     Ответить | Цитировать Сообщить модератору
 Re: Provider=SQLOLEDB.1 vs Provider=SQLNCLI  [new]
Vicont_rtf
Member

Откуда:
Сообщений: 64
Не внимательно читали http://www.connectionstrings.com/
Еще будут проблемы с Identity и с датами пока все явно не укажете, обратите внимание на язык по умолчанию для пользователей (определяет формат даты)
Советую указать все параметры:
Provider='SQLNCLI',Identity='scope_identity()',DateFormat='dd.mm.yyyy',DateTimeFormat='\''dd.mm.yyyy HH:mm:ss.fff\''',DelimitIdentifier=1,TrimSpaces=1
30 ноя 11, 15:34    [11684164]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить