Показаны сообщения с ярлыком MS SQL. Показать все сообщения
Показаны сообщения с ярлыком MS SQL. Показать все сообщения

понедельник, 24 апреля 2023 г.

Как обнулить счетчик в таблице MS SQL

 Даже если вы удалите все поля из таблицы БД, где есть автоинкриментное поле, Вы все равно не добъетесь того чтобы ваш счетчик начал свой отчет с нуля. Как же это сделать?
     Чудная возможность есть у MS SQL сервера - автоинкремировать поле IDENTITY. Но когда вы удаляете все содержимое таблицы, вы надеетесь, что счетчик начнет свой отсчет снова, но это не так. Для того чтобы сбросить его значение вы можете попробовать следующее:

  1. Вы можете снять свойство IDENTITY с поля и поставить его заново, но это не есть правильно.
  2. TRUNCATE TABLE имя_таблицы - удаляет все содержимое таблицы и обнуляет счетчик автоматически. В принципе - то что надо когда вы рушите всю таблицу и хотите чтобы счетчик тоже порушился. Но если в таблице существует FOREIGN KEY вам придется прибегнуть к третьему способу.
  3. DBCC CHECKIDENT ('имя_таблицы', RESEED, новое_стартовое_значение) - сбрасывает значение счетчика в указанное значение. Способ подходит когда вы выкидываете часть таблицы и хотите чтобы поле счетчика не имело провалов.

четверг, 24 ноября 2022 г.

Slackware, unixODBC , MSSQL , Perl , DBI, DBD

0. Установить unixODBC http://www.unixodbc.org/ 

при установке лучше всего не менять параметры по умолчанию, чтобы система сразу подхватила драйвера. То есть не нужно делать ./configure --prefix=/usr/local/unixODBC и ./configure --sysconfdir=/etc. 

./configure

./make 

./make install

 

Дополнение: Для того чтобы в линукс odbc интерфейс мог получать данные из БД в юникоде, нужно у установить DBD::ODBC с поддержкой юникод.

OOn non-Windows platforms Unicode support is disabled by default.
 To enable it specify -u to Makefile.PL when you configure DBD::ODBC.

https://metacpan.org/pod/DBD::ODBC#Enabling-and-Disabling-Unicode-support

You can also specify that you want UNICODE support by setting the DBD_ODBC_UNICODE environment variable prior to install:

export DBD_ODBC_UNICODE=1
cpanm DBD::ODBC



 1. Скачать драйвер с сайта майкрософт для убунту. ODBC linux MSSQL

https://packages.microsoft.com/ubuntu/18.04/prod/pool/main/m/msodbcsql18/ 

2. deb2tgz перевести в формат слаки и установить

https://www.slackbuilds.org/repository/14.2/misc/deb2tgz/

3. разобраться какие библиотеки требует драйвер в папке /opt/microsoft с помощью ldd

после находим отсутствующие библиотеки через locate,

например locate libodbcinst.so.2

приводит к /usr/local/unixODBC/lib/libodbcinst.so.2 



4. создать символьные линки библиотек в /lib64

  libodbcinst.so.2 => not found

линки создаем обращаем внимание куда попали файлы библиотек после установки unixodbc

так ln -s /usr/local/unixODBC/lib/libodbcinst.so.2 /lib64/libodbcinst.so.2 ,
или так  ln -s /usr/local/lib/libodbcinst.so.2 /lib64/libodbcinst.so.2 

 есть проблемы которые возникают изза разных версий дрйвера odbc от майкрософт,

на виртуалке был скачен драйвер msodbcsql18_18.0.1.1-1_amd64 у которого в зависимостях не было библиотек libcrypt libssl версии 1.0.0.  . На реальной машине с драйвером libmsodbcsql-13.1.so.9.2  есть зависемости которые я не смог разрешить на slack 15. Вариант решения брать опробованный драйвер (https://packages.microsoft.com/ubuntu/18.04/prod/pool/main/m/msodbcsql18/ ) и снести проблемный.

ln -s /usr/lib64/libcrypto.so.1.1 /lib64/libcrypto.so.1.0.0 
 
odbcinst.ini - после установки драйвера образец будет лежать в папке,
/opt/microsoft/..../etc 
нужно скопировать в папку unixodbc (/usr/local/etc/)
 
[ODBC Driver 18 for SQL Server]
Description=Microsoft ODBC Driver 18 for SQL Server
Driver=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.0.so.1.1

также нужно проверить скрипт на перле, если ругается на DBD::ODBC
odbc.ini  (/usr/local/etc/) тут прописываются DSN
 
[demo]
Driver = ODBC Driver 18 for SQL Server
Description = demo dsn
Server = MAINSTATION\MSQL2019
TrustServerCertificate = yes
Database = Test
User = sa
Password =



 
 
5. создать dsn  , создать описание драйвера odbcinst -j
 

6. тестовый скрипт для проверки связи с сервером



#!/usr/bin/perl -w
use strict;

use DBI;

# Replace datasource_name with the name of your data source.
# Replace database_username and database_password
# with the SQL Server database username and password.
my $data_source = q/dbi:ODBC:demo/;
my $user = q/sa/;
my $password = q/pass/;

# Connect to the data source and get a handle for that connection.
my $dbh = DBI->connect($data_source, $user, $password)
    or die "Can't connect to $data_source: $DBI::errstr";

# This query generates a result set with one record in it.
my $sql = "SELECT 1 AS test_col";

# Prepare the statement.
my $sth = $dbh->prepare($sql)
    or die "Can't prepare statement: $DBI::errstr";

# Execute the statement.
$sth->execute();

# Print the column name.
print "$sth->{NAME}->[0]\n";

# Fetch and display the result set value.
while ( my @row = $sth->fetchrow_array ) {
   print "@row\n";
}

# Disconnect the database from the database handle.
$dbh->disconnect;
 
********************************************
odbc.ini 
 
[demo]
Driver = ODBC Driver 18 for SQL Server
Description = demo dsn
Server = MAINSTATION\MSQL2019
TrustServerCertificate = yes
Database = Test
User = sa
Password = 
********************************************
 
odbcinst.ini - после установки драйвера образец будет лежать в папке,
/opt/microsoft/..../etc 
нужно скопировать в папку unixodbc
 
[ODBC Driver 18 for SQL Server]
Description=Microsoft ODBC Driver 18 for SQL Server
Driver=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.0.so.1.1 
 
 
  
 
 
 
 
 
 






Ошибка установки соединения по причине: Ошибка определения принадлежности клиентского и серверного процессов одному компьютеру.

  Ошибка установки соединения по причине: Ошибка определения принадлежности клиентского и серверного процессов одному компьютеру.     Отключ...