Bigint ms sql: Использование типа данных bigint — Служба поддержки Майкрософт

Содержание

Использование типа данных bigint — Служба поддержки Майкрософт

Тип данных bigint для больших чисел хранит неденежные числовые значения и совместим с типом данных SQL_BIGINT в ODBC. Используйте этот тип данных для эффективных вычислений с большими числами.

Вы можете добавить поле такого типа в таблицу Access. Кроме того, можно создать связь с данными или импортировать их из баз данных, содержащих соответствующий тип данных, например тип bigint SQL Server. Добавить тип данных bigint можно в Access 2016 (сборки 16.0.7812 или более поздней).

В этой статье




Добавление поля bigint в таблицу


Создание связи с внешней базой данных или импорт из нее с поддержкой типа данных SQL_BIGINT


Последствия поддержки типа данных bigint


Обратная совместимость

Добавление поля bigint в таблицу


Тип данных bigint (восемь байт) существенно расширяет диапазон для вычислений по сравнению с типом данных number (четыре байта). 63-1. Дополнительные сведения см. в статье Введение в использование типов данных и свойств полей.

Если добавить поле типа bigint в таблицу и сохранить ее структуру, будет включена поддержка этого типа данных, а база данных станет несовместимой с предыдущими версиями Access. Перед сохранением структуры таблицы появится предупреждение об этом на случай, если для вас важна совместимость базы данных. Дополнительные сведения см. в разделе Обратная совместимость.


К началу страницы


Создание связи с внешней базой данных или импорт из нее с поддержкой типа данных SQL_BIGINT


Вы также можете использовать тип данных bigint для эффективной работы со связанными или импортированными данными, например с базой данных SQL Server, в которой применяется аналогичный тип данных. До того как в Access появилась поддержка типа данных bigint, подобные типы данных приводились к типу «Короткий текст».

Когда поддержка типа данных bigint включена для операций связывания и импорта, вы можете создать связь с внешним источником данных или импортировать из него данные, используя драйвер ODBC, который поддерживает тип данных SQL_BIGINT, в том числе первичный ключ на его основе. Например, с помощью драйвера ODBC, установленного вместе с Windows, можно подключаться к таким внешним источникам данных, а также к другим базам данных в формате Access 2016 (ACCDB), которые содержат поля типа bigint.



Включение поддержки типа данных bigint


По умолчанию поддержка типа данных bigint не включена для операций связывания и импорта. Но вы можете явно включить ее, установив в Access параметр Поддержка типа данных BigInt для связанных/импортированных таблиц. Когда вы попытаетесь сделать это, появится предупреждение на случай, если для вас важна совместимость базы данных. После установки этого параметра база данных утратит обратную совместимость с предыдущими версиями Access.

Дополнительные сведения см. в статье Настройка пользовательских параметров текущей базы данных и разделе Обратная совместимость.


Существующие таблицы не будут преобразованы автоматически


Если включить поддержку типа данных bigint, это не приведет к автоматическому изменению типа данных в существующих таблицах. Возможно, вы уже использовали драйвер ODBC для создания связи с источником данных, поддерживающим тип данных SQL_BIGINT (например, тип данных bigint в SQL Server), или для импорта данных из такого источника. В обоих случаях поле такого типа было преобразовано в Access в поле с типом данных «Короткий текст». Чтобы изменить тип данных на bigint, выполните описанные ниже действия.


Связанная    таблица включает параметр поддержки BigInt, а затем обновляет связанные таблицы с помощью диспетчера связанных таблиц (выберите «Внешние данные» > «Диспетчер связанных таблиц», выберите соответствующие таблицы и затем выберите «ОК»). В этом случае столбец будет преобразован из типа «Короткий текст» в тип данных «Большое число».


Импортируемая таблица    Измените тип данных поля с типом данных «Короткий текст» на тип данных «Большое число» (откройте таблицу в Конструкторе, выберите поле в столбце «Тип данных», в списке типов данных выберите «Большое число» и сохраните изменения).


К началу страницы


Последствия поддержки типа данных bigint


Прежде чем начать использовать тип данных bigint, очень важно понять, как это повлияет на базы данных Access.



Присвоение метки Access 2016 формату файлов Access 2007–2016 (ACCDB)


Коротко говоря, включить поддержку типа данных bigint можно двумя способами: добавить в локальную таблицу поле с типом данных bigint или установить в Access параметр Поддержка типа данных BigInt для связанных/импортированных таблиц. Каким бы из них вы ни воспользовались, это изменение необратимо и базу данных невозможно вернуть в предыдущее состояние. В обоих случаях перед внесением изменений в Access появляется предупреждение.

Нужно учесть, что при включении поддержки типа данных bigint формату файлов Access 2007–2016 (ACCDB) присваивается метка Access 2016. Присвоение метки формату файлов базы данных означает, что вы внесли в него определенное изменение, номер версии базы данных увеличился, но в остальном формат остался прежним. Если попытаться открыть такую базу данных в Access 2013 или Access 2016, эта метка интерпретируется следующим образом:

  • Если номер версии базы данных меньше 16.7, то тип данных bigint не поддерживается и вы сможете открыть ее.

  • org/ListItem»>

    Если номер версии базы данных равен или больше 16.7, то тип данных bigint поддерживается и вы сможете открыть ее только в Access 2016.

Сведения о поддержке типа данных bigint в различных версиях продукта


В таблице ниже перечислены ситуации, которые могут возникнуть при использовании типа данных bigint в различных версиях продукта. Обратите внимание: поддержка включается, когда вы добавляете в таблицу поле с типом данных bigint или устанавливаете соответствующий параметр для связывания и импорта данных.

Совет: Дополнительные сведения о том, как узнать номер версии продукта, см. в статье Какая у меня версия Office?





Поддержка типа данных bigint


Версия продукта: Access 2013, а также Access 2016 с номером версии меньше 16. 0.7812


Версия продукта: Access 2016 с номером версии 16.0.7812 или больше


Включена

Невозможно открыть базу данных, и появляется сообщение об ошибке со ссылкой на статью справки.

Чтобы найти выход из этой ситуации, см. статью «Прекращение поддержки типа данных bigint для базы данных в формате Access 2007–2016».

Вы можете открыть базу данных.

Поля локальной таблицы, для которых задан тип данных bigint, интерпретируются как большие числа.

Вы можете обновить связанные таблицы. Столбцы, которые до этого считались имеющими тип данных «Короткий текст», будут автоматически приведены к типу данных bigint.


Не включена

Вы можете открыть базу данных.

Вы можете обновить связанные таблицы. Если столбцы в связанной таблице основаны на данных типа bigint и были приведены к типу «Короткий текст», ничего не изменится.

Номер версии файла базы данных останется прежним.

Вы можете открыть базу данных.

Вы можете обновить связанные таблицы. Если столбцы в связанной таблице основаны на данных типа bigint и были приведены к типу «Короткий текст», ничего не изменится.

Номер версии файла базы данных останется прежним.

Примечание: Тип данных bigint ни при каких обстоятельствах не поддерживается для формата файлов Access (MDB), предшествующего формату Access 2007–2016.


Определение состояния поддержки для типа данных bigint в базе данных Access


Если у вас есть база данных Access, созданная другим пользователем, вы, возможно, захотите узнать, поддерживается ли в ней тип данных bigint. Вы можете сделать следующее:


Проверьте заголовок окна.   Если базе данных присвоена метка, заголовок выглядит так: <имя базы данных> (Access 2016). В противном случае он имеет такой вид: <имя базы данных> (Access 2007–2016).


Проверьте программным путем Посмотрите текущий номер версии базы данных. Нажмите клавиши CTRL+G, чтобы открыть окно проверки Visual Basic, введите ?CurrentDb().Version и нажмите клавишу ВВОД. Если возвращенное значение меньше 16.7, это означает, что поддержка не включена. Если оно больше или равно 16.7, поддержка включена.


К началу страницы


Обратная совместимость


Если вы хотите поддерживать обратную совместимость с различными форматами файлов, важно знать свойства среды базы данных. Дополнительные сведения обо всех форматах файлов Access см. в статье Какой формат файла следует использовать в Access?

Ниже описаны три варианта, которые следует рассмотреть.



Сохранение имеющейся общей среды форматов файлов баз данных


Чтобы сохранить общую среду форматов файлов с базами данных в формате Access 2007–2016 (ACCDB) и в предыдущих форматах (MDB), соблюдайте такие требования:

  • org/ListItem»>

    не добавляйте ни в одну из таблиц столбец с типом данных bigint;

  • не включайте поддержку типа данных bigint для операций связывания и импорта. Дополнительные сведения см. в статье Настройка пользовательских параметров текущей базы данных.

Добавление поддержки типа данных bigint в базу данных в формате Access 2007–2016


Чтобы добавить поддержку типа данных bigint в базу данных в формате Access 2007–2016 (ACCDB), сделайте следующее:

  1. Откройте базу данных в Access 2016 (версии 16.0.7812 или более поздней).

  2. org/ListItem»>

    Включите поддержку типа данных bigint для операций связывания и импорта. Дополнительные сведения см. в статье Настройка параметров для отображения и хранения данных в базе данных.

  3. Обновите связанные таблицы с помощью диспетчера связанных таблиц. Для этого выберите Внешние данные > Диспетчер связанных таблиц, щелкните нужные таблицы и нажмите кнопку ОК.

    ИЛИ

    Добавьте в таблицу поле с типом данных bigint и сохраните ее структуру.

В результате поля с типом данных «Короткий текст» будут приведены к типу bigint.


Прекращение поддержки типа данных bigint в базе данных в формате Access 2016


Базу данных в формате Access 2016 невозможно открыть в более ранних версиях Access. Чтобы обойти эту проблему, сделайте следующее:

  1. Создайте новую базу данных в формате 2007–2016 и не включайте поддержку типа данных bigint для операций связывания и импорта. Дополнительные сведения см. в статье Настройка пользовательских параметров текущей базы данных.

  2. Импортируйте нужные объекты из исходной базы данных в новую.

  3. В новой базе данных создайте связи с таблицами исходной базы данных.

В результате поля с типом данных bigint будут преобразованы в тип данных «Короткий текст», а новая база данных будет совместима со всеми форматами файлов Access 2007–2016 (ACCDB).


К началу страницы


Разница между типами данных INT и BIGINT в Sql Server

Различия, Sql ServerBIGINT, BIGINT против INT, INT, INT против BIGINT, Sql, Sql INT против BIGINT, Sql Server, Sql Server Разница между INT и BIGINT, Sql Server INT против BIGINTBasavaraj Biradar

И INT, и BIGINT являются точными числовыми типами данных, используемыми для хранения целочисленных значений. В таблице ниже перечислены основные различия между типами данных INT и BIGINT.

963-1) Пример использования

ОБЪЯВИТЬ @i INT
НАБОР @i = 150
ПЕЧАТЬ @i
 

РЕЗУЛЬТАТ:
150

ЗАЯВИТЬ @i БОЛЬШОЙ
НАБОР @i = 150
ПЕЧАТЬ @i
 

РЕЗУЛЬТАТ:
150

Пример размера хранилища, используемого переменной для хранения значения
ОБЪЯВИТЬ @i INT
НАБОР @i = 150
ПЕЧАТЬ ДЛИНА ДАННЫХ( @i)
 

РЕЗУЛЬТАТ:
4

ЗАЯВИТЬ @i БОЛЬШОЙ
НАБОР @i = 150
ПЕЧАТЬ ДЛИНА ДАННЫХ( @i)
 

РЕЗУЛЬТАТ:
8

Пример значения INT вне допустимого диапазона
ОБЪЯВИТЬ @i INT
НАБОР @i = 2147483648
ПЕЧАТЬ @i
 

РЕЗУЛЬТАТ:

Сообщение 8115, уровень 16, состояние 2, строка 2
Ошибка арифметического переполнения при преобразовании выражения в тип данных int.

ЗАЯВИТЬ @i БОЛЬШОЙ
НАБОР @i = 2147483648
ПЕЧАТЬ @i
 

РЕЗУЛЬТАТ:
2147483648

Попытаться сохранить отрицательное значение
ОБЪЯВИТЬ @i INT
НАБОР @i = -150
ПЕЧАТЬ @i
 

РЕЗУЛЬТАТ:
-150

ЗАЯВИТЬ @i БОЛЬШОЙ
НАБОР @i = -150
ПЕЧАТЬ @i
 

РЕЗУЛЬТАТ:
-150

[ТАКЖЕ ЧИТАЙТЕ] SMALLINT Vs INT

Выбор правильного типа данных при создании таблицы очень важен. Неправильный выбор типа данных приведет к проблемам с производительностью и хранением с течением времени по мере роста данных. Поскольку неправильный выбор типа данных требует больше места для хранения и нет. записей, хранящихся на каждой странице данных, будет меньше. Кроме того, если индекс создается для таких столбцов, он не только занимает дополнительное место при хранении значения в строке на странице данных, но также требует дополнительного места в индексе. Меньше нет. записей, хранящихся на странице данных, то для обслуживания запросов Sql Server больше не нужно загружать. страниц данных в память. Таким образом, очень важно выбрать правильный тип данных при создании таблицы. Надеюсь, приведенные выше различия помогут вам выбрать правильный тип данных при создании таблицы.

ЧИТАЙТЕ ТАКЖЕ

  • Varchar против NVarchar
  • Варчар против Варчара (МАКС)
  • Чар против Варчара
  • Текст против Varchar (макс.)
  • Союз против Союза Все
  • DateTime против DateTime2
  • SET QUOTED_IDENTIFIER ON и SET QUOTED_IDENTIFIER OFF
  • Хранимая процедура и пользовательская функция
  • Первичный ключ и уникальный ключ
  • ПОДЪЕМНИК против ВЫБРОСА
  • Сравнение временной таблицы и переменной таблицы
  • Len() против Datalength()
  • Последовательность и идентичность
  • DATEDIFF против DATEDIFF_BIG
  • ЛЕВОЕ СОЕДИНЕНИЕ против ЛЕВОГО ВНЕШНЕГО СОЕДИНЕНИЯ
  • ПРАВОЕ СОЕДИНЕНИЕ и ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
  • СОЕДИНЕНИЕ против ВНУТРЕННЕГО СОЕДИНЕНИЯ
  • ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ и ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
  • SMALLDATETIME против DATETIME

Не закончатся ли идентификаторы INT и BIGINT в SQL Server?

В войне за идентификаторы и идентификаторы GUID в качестве кластерных индексов одним из аргументов в пользу уникальных идентификаторов является то, что при использовании числового столбца идентификаторов (например, INT или BIGINT) для кластерного индекса могут закончиться числа. Это реальная проблема? Короткий ответ: да, это возможно, но не так вероятно, как вы думаете.

Пол Рэндал провел расчеты в этом сообщении в блоге, и, учитывая, что он фактически работал и создавал части механизма хранения SQL Sever, я склонен верить его цифрам. Вот что он сказал: 931/1000 = 2,15 миллиона секунд или чуть меньше 25 дней. Хотя многие из вас не выдерживают 1000 строк в секунду, это все еще очень проблематичное ограничение.

источник:
https://www.sqlskills.com/blogs/paul/sqlskills-sql101-running-out-of-ints-and-bigints/

Таким образом, в системе, которая добавляет 1000 строк в секунду, 24 часа в сутки, 7 дней в неделю, у вас закончатся значения INT в всего 25 дней, ЕСЛИ вы начали начальное значение с 1 и увеличили на 1 (что довольно типично). На самом деле вы можете начать начальное число с -2 147 483 648 и увеличить его на 1, что даст вам около 50 дней до того, как вы закончите, что все еще не так уж здорово. Однако, как отмечает Пол, большинство серверов SQL не будут непрерывно выполнять 1000 вставок в секунду. 6 = 9.0,2 триллиона секунд или примерно 292,5 тысячи лет. А к тому времени это уже чужая проблема… 🙂 И это только для половины возможного диапазона значений bigint.

Источник:
https://www.sqlskills.com/blogs/paul/sqlskills-sql101-running-out-of-ints-and-bigints/

Он продолжает:

Итак, с 1 миллионом строк в секунду вы будете генерировать 1 миллион x 3600 (секунд в часе) x 24 (часа в сутках) = 86,4 миллиарда строк в день

Источник:
https://www.sqlskills.com/blogs/paul/sqlskills-sql101-running-out-of-ints-and-bigints/

Это много данных: 86,4 миллиарда строк в день, 24 часа в сутки, 7 дней в неделю, в течение 292,5 тысяч лет до исчерпания BIGINT. И, как и в примере с INT, это только для половины диапазона всех допустимых значений BIGINT. Если вы начнете начальное значение BIGINT с -9 223 372 036 854 775 808 и увеличите его на 1, вы удвоите диапазон значений, которые Пол использовал в этом расчете.