Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как посчитать допустимую длину строки, передаваемую в запрос в MSSQL server в INSERT / 14 сообщений из 14, страница 1 из 1
25.11.2018, 02:24
    #39738092
SIMPLicity_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать допустимую длину строки, передаваемую в запрос в MSSQL server в INSERT
С одной стороны: MSSQL Server (2008), база test, таблица tableA, поле FieldNVarChar nvarchar(max) null)
С другой стороны: C#, Net 4.0

Настраиваю и открываю подключение к MSSQL-серверу....
Формирую строку string S примерного содержания: insert into test.dbo.tableA (FieldNVarChar) values('Это длинная тестовая строка, которая содержит кучу текста.........')

Как узнать - какой максимальной длинны я смогу сформировать (и передать в commandText) строку S с тем что бы не было сбоя. Примерно 2 млрд. символов (4ГБайт / 2 )?

--------------------------
No ROM Basic...
...
Рейтинг: 0 / 0
25.11.2018, 02:31
    #39738095
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать допустимую длину строки, передаваемую в запрос в MSSQL server в INSERT
SIMPLicity_Как узнать - какой максимальной длинны я смогу сформировать (и передать в commandText) строку S с тем что бы не было сбоя. Примерно 2 млрд. символов (4ГБайт / 2 )?

Стесняюсь предложить как минимум два варианта: документация, практические испытания.

Но это наверное не тренд ))
...
Рейтинг: 0 / 0
25.11.2018, 09:56
    #39738125
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать допустимую длину строки, передаваемую в запрос в MSSQL server в INSERT
SIMPLicity_Формирую строку string S примерного содержания: insert into test.dbo.tableA (FieldNVarChar) values('Это длинная тестовая строка, которая содержит кучу текста.........')
По рукам бить за такое надо. Про параметры команд не слышали, не?
...
Рейтинг: 0 / 0
25.11.2018, 11:39
    #39738143
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать допустимую длину строки, передаваемую в запрос в MSSQL server в INSERT
Максимальная длина строки запроса, который можно послать по сети

65,536 * Network Packet Size

Network Packet Size is the size of the tabular data stream (TDS) packets used to communicate between applications and the relational Database Engine. The default packet size is 4 KB, and is controlled by the network packet size configuration option

https://docs.microsoft.com/en-us/sql/sql-server/maximum-capacity-specifications-for-sql-server?view=sql-server-2017
...
Рейтинг: 0 / 0
25.11.2018, 11:40
    #39738144
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать допустимую длину строки, передаваемую в запрос в MSSQL server в INSERT
Сон Веры ПавловныПо рукам бить за такое надо. Про параметры команд не слышали, не?
а что это изменит в контексте вопроса? На сервер все равно уйдет длинный пакет, даже чуть длиннее.
...
Рейтинг: 0 / 0
25.11.2018, 21:56
    #39738272
SIMPLicity_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать допустимую длину строки, передаваемую в запрос в MSSQL server в INSERT
Сон Веры ПавловныSIMPLicity_Формирую строку string S примерного содержания: insert into test.dbo.tableA (FieldNVarChar) values('Это длинная тестовая строка, которая содержит кучу текста.........')
По рукам бить за такое надо. Про параметры команд не слышали, не?

Я не настолько крут что бы заморачиваться в данной ситуации с параметризацией...

PS ... и, это, так я могу легко вылавливать несоответствия ... просто просматривая запрос целиком ...
...
Рейтинг: 0 / 0
25.11.2018, 22:04
    #39738275
SIMPLicity_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать допустимую длину строки, передаваемую в запрос в MSSQL server в INSERT
Cat2Максимальная длина строки запроса, который можно послать по сети

65,536 * Network Packet Size

Network Packet Size is the size of the tabular data stream (TDS) packets used to communicate between applications and the relational Database Engine. The default packet size is 4 KB, and is controlled by the network packet size configuration option

https://docs.microsoft.com/en-us/sql/sql-server/maximum-capacity-specifications-for-sql-server?view=sql-server-2017

Про nvarchar(max):
https://docs.microsoft.com/ru-ru/sql/t-sql/data-types/nchar-and-nvarchar-transact-sql?view=aps-pdw-2016 nvarchar [ ( n | max ) ]
Строковые данные переменной длины. n определяет длину строки в парах байтов и может иметь значение от 1 до 4000. Значение max указывает, что максимальный размер при хранении составляет 2^30-1 символов (2 ГБ). Размер при хранении определяется как дважды n байт + 2 байта. В случае с кодировкой UCS-2 размер при хранении определяется как дважды n байт + 2 байта, а количество хранимых символов равно n. Для кодировки UTF-16 размер при хранении также равен дважды n байт + 2 байта, но количество хранимых символов может быть меньше n, так как дополнительные символы используют две пары байтов (также называются суррогатными парами). Синонимами типа nvarchar по стандарту ISO являются типы national char varying и national character varying. - в общем - уже не более 2 ГБайт.
...
Остановился на допуске, что и 1 Гиг вряд-ли когда "зайдёт" ко мне. Скорее, "по ту сторону баррикад" что-то сдохнет раньше...
...
Рейтинг: 0 / 0
25.11.2018, 22:18
    #39738280
iskatelsql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать допустимую длину строки, передаваемую в запрос в MSSQL server в INSERT
SIMPLicity_,

Я честн незнаю MSSQL, но в MySql есть LOAD DATA INFILE которая собственно "reads rows from a text file into a table at a very high speed"

Может чтото подобное поискать?
...
Рейтинг: 0 / 0
25.11.2018, 22:39
    #39738282
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать допустимую длину строки, передаваемую в запрос в MSSQL server в INSERT
Shocker.ProСон Веры ПавловныПо рукам бить за такое надо. Про параметры команд не слышали, не?
а что это изменит в контексте вопроса? На сервер все равно уйдет длинный пакет, даже чуть длиннее.
если руки не из жопы растут - поток уедет на сервер
...
Рейтинг: 0 / 0
26.11.2018, 18:41
    #39738752
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать допустимую длину строки, передаваемую в запрос в MSSQL server в INSERT
iskatelsqlSIMPLicity_,

Я честн незнаю MSSQL, но в MySql есть LOAD DATA INFILE которая собственно "reads rows from a text file into a table at a very high speed"

Может чтото подобное поискать?
Есть bulk insert, который в качестве источника данных может считывать из файла, но ограничения на длину одного запроса те же самые
...
Рейтинг: 0 / 0
26.11.2018, 19:28
    #39738775
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать допустимую длину строки, передаваемую в запрос в MSSQL server в INSERT
Cat2iskatelsqlSIMPLicity_,

Я честн незнаю MSSQL, но в MySql есть LOAD DATA INFILE которая собственно "reads rows from a text file into a table at a very high speed"

Может чтото подобное поискать?
Есть bulk insert, который в качестве источника данных может считывать из файла, но ограничения на длину одного запроса те же самые
BULK INSERT умеет читать из потока

ограничение только максимальный размер поля - 2GB(не распространяется на FILESTREAM)
...
Рейтинг: 0 / 0
26.11.2018, 19:47
    #39738783
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать допустимую длину строки, передаваемую в запрос в MSSQL server в INSERT
ИзопропилBULK INSERT умеет читать из потока
Как будто файл не является потоком
...
Рейтинг: 0 / 0
27.11.2018, 01:07
    #39738877
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать допустимую длину строки, передаваемую в запрос в MSSQL server в INSERT
Cat2ИзопропилBULK INSERT умеет читать из потока
Как будто файл не является потоком
Ее всякий поток является файлом
...
Рейтинг: 0 / 0
28.11.2018, 20:02
    #39740093
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать допустимую длину строки, передаваемую в запрос в MSSQL server в INSERT
ИзопропилCat2пропущено...

Как будто файл не является потоком
Ее всякий поток является файлом
Но всякий файл может быть представлен, как поток
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как посчитать допустимую длину строки, передаваемую в запрос в MSSQL server в INSERT / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]