====== MSSQL - TnT ====== ==== Error: 15023 ==== Ошибка - User, group, or role already exists in the current database. (Microsoft SQL Server, Error: 15023) При миграции сервера сбились права доступа к базам. use [database_name] exec sp_change_users_login 'AUTO_FIX', '[user_name]' go Подробнее в [[https://learn.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-change-users-login-transact-sql?view=sql-server-ver16|sp_change_users_login (Transact-SQL)]] ==== Could not create SSL/TLS secure channel ==== Ошибка **The request was aborted: Could not create SSL/TLS secure channel** * [[https://docs.microsoft.com/en-us/officeonlineserver/enable-tls-1-1-and-tls-1-2-support-in-office-online-server#enable-strong-cryptography-in-net-framework-45-or-higher|Enable strong cryptography in .NET Framework 4.5 or higher]] * [[https://docs.microsoft.com/en-us/dotnet/framework/network-programming/tls|Transport Layer Security (TLS) best practices with the .NET Framework]] Исходящие запросы идут со старого tls 1.0, которые на удаленной стороне запрещены. Правильнее конечно чинить на стороне .net приложения, но как всегда нужен быстрофикс. Можно через reg файл по ссылкам выше. Мне удобнее было через powershell. Включаем tls 1.2 # 64 bit .net framework Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v2.0.50727' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v2.0.50727' -Name 'SystemDefaultTlsVersions' -Value '1' -Type DWord Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319' -Name 'SystemDefaultTlsVersions' -Value '1' -Type DWord # 32 bit .net framework Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727' -Name 'SystemDefaultTlsVersions' -Value '1' -Type DWord Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -Name 'SystemDefaultTlsVersions' -Value '1' -Type DWord Вернуть обратно можно через **Remove-ItemProperty** # 64 bit .net framework Remove-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v2.0.50727' -Name 'SchUseStrongCrypto' Remove-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' Remove-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v2.0.50727' -Name 'SystemDefaultTlsVersions' Remove-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319' -Name 'SystemDefaultTlsVersions' # 32 bit .net framework Remove-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727' -Name 'SchUseStrongCrypto' Remove-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' Remove-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727' -Name 'SystemDefaultTlsVersions' Remove-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -Name 'SystemDefaultTlsVersions' PS почитать для чего нужны следующие настройки FIXME заработало без этих настроек # сlient side Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -Name 'DisabledByDefault' -Value '0' -PropertyType DWORD Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -Name 'Enabled" -Value '1' -PropertyType DWORD # server side Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -Name 'DisabledByDefault' -Value '0' -PropertyType DWORD Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -Name 'Enabled' -Value '1' -PropertyType DWORD ==== Проверить версию ODBC драйвера ==== [[https://docs.microsoft.com/ru-ru/sql/database-engine/configure-windows/check-the-odbc-sql-server-driver-version-windows?view=sql-server-ver15|Check the ODBC SQL Server Driver Version (Windows)]] C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\**ODBC Data Sources (64-bit)** {{:microsoft:mssql:mssql_odbc_version.png?nolink&600|}} ==== Проверить версию MSSQL сервера ==== select @@VERSION {{:microsoft:mssql:msssq_version.png?nolink&900|}} ==== Где скачать cumulative update ==== * https://sqlserverupdates.com/ * [[https://support.microsoft.com/ru-ru/help/4047329/sql-server-2017-build-versions|Сборки кумулятивного обновления (CU) SQL Server 2017]] / [[https://support.microsoft.com/ru-ru/help/321185/how-to-determine-the-version-edition-and-update-level-of-sql-server-an|Как определить версию, выпуск и уровень обновления системы SQL Server и ее компонентов]] ==== Размер БД ==== Размер/сумма всех баз ([[https://stackoverflow.com/a/7122249|Get overall sum of all databases size in a SQL Server]]) SELECT CONVERT(DECIMAL(10,2),(SUM(size * 8.00) / 1024.00 / 1024.00)) As UsedSpace FROM master.sys.master_files Размер по каждой базе #1 ([[https://stackoverflow.com/a/5946134|SQL Server 2008: How to query all databases sizes?]]) with fs as ( select database_id, type, size * 8.0 / 1024 size from sys.master_files ) select name, (select sum(size) from fs where type = 0 and fs.database_id = db.database_id) DataFileSizeMB, (select sum(size) from fs where type = 1 and fs.database_id = db.database_id) LogFileSizeMB from sys.databases db Размер по каждой базе #2 ([[https://www.c-sharpcorner.com/blogs/check-database-size-in-sql-server1|Check Database Size in SQL SERVER]]) SELECT sys.databases.name, CONVERT(VARCHAR,SUM(size)*8/1024)+' MB' AS [Total disk space] FROM sys.databases JOIN sys.master_files ON sys.databases.database_id=sys.master_files.database_id GROUP BY sys.databases.name ORDER BY sys.databases.name ==== Различие CU, GDR и SP ==== * [[https://www.sqltattoo.com/blog/2021/01/sql-server-patching-gdr-vs-cu/|SQL Server patching: GDR vs CU]] * [[https://www.sqlskills.com/blogs/glenn/modern-sql-server-servicing-model/|Modern SQL Server Servicing Model]] * [[https://sqlserverupdates.com|SQLServerUpdates.com]] * [[https://sqlserverbuilds.blogspot.com|Microsoft SQL Server Versions List]] Для trueЪ - SP больше нет, GDR только security фиксы (ставится через Windows Update), CU ставится вручную и содержит новые функции, а не только security фиксы. ==== Error 5701 5703 ==== [06-Dec-2021 14:55:27 UTC] pdo_sqlsrv_db_handle_factory: error code = 5701 [06-Dec-2021 14:55:27 UTC] pdo_sqlsrv_db_handle_factory: message = [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Changed database context to 'foobar_dev'. [06-Dec-2021 14:55:27 UTC] pdo_sqlsrv_db_handle_factory: SQLSTATE = 01000 [06-Dec-2021 14:55:27 UTC] pdo_sqlsrv_db_handle_factory: error code = 5703 [06-Dec-2021 14:55:27 UTC] pdo_sqlsrv_db_handle_factory: message = [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Changed language setting to us_english. [[https://knowledgebase.progress.com/articles/Article/3509|Не ошибка]]. //These are expected warning messages which don't represent any errors, but they only provide information about the connected database and language that is being used.// ==== Как найти причину Login failed for user ==== https://sqlserver-help.com/2014/07/08/help-how-to-find-cause-of-login-failed-for-user-error/ ==== tempDb перенести или изменить размер ==== Посмотреть текущее расположение файлов SELECT name , physical_name AS CurrentLocation , state_desc FROM sys.master_files WHERE database_id = DB_ID(N'tempdb'); Изменить расположение USE master; GO ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'D:\tempDb\Data\tempdev.mdf'); GO ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'D:\tempDb\Log\templog.ldf'); GO При успешном выполнении будет сообщение The file "tempdev" has been modified in the system catalog. The new path will be used the next time the database is started. The file "templog" has been modified in the system catalog. The new path will be used the next time the database is started. После чего можно перезапустить SQL Server и удалить старые temp файлы. Как изменить размер tempdb USE master; GO ALTER DATABASE tempdb MODIFY FILE (NAME = 'tempdev', SIZE = NEW_SIZE_MB, FILEGROWTH = 512MB) ALTER DATABASE tempdb MODIFY FILE (NAME = 'templog', SIZE = NEW_SIZE_MB, FILEGROWTH = 64MB) GO Несколько файлов USE master; GO ALTER DATABASE tempdb ADD FILE (NAME = N'tempdev', FILENAME = N'D:\tempDb\tempdev.mdf' , SIZE = 1GB , FILEGROWTH = 0); ALTER DATABASE tempdb ADD FILE (NAME = N'tempdev2', FILENAME = N'D:\tempDb\tempdev2.ndf' , SIZE = 1GB , FILEGROWTH = 0); ALTER DATABASE tempdb ADD FILE (NAME = N'tempdev3', FILENAME = N'D:\tempDb\tempdev3.ndf' , SIZE = 1GB , FILEGROWTH = 0); ALTER DATABASE tempdb ADD FILE (NAME = N'tempdev4', FILENAME = N'D:\tempDb\tempdev4.ndf' , SIZE = 1GB , FILEGROWTH = 0); GO * [[https://docs.microsoft.com/ru-ru/sql/relational-databases/databases/tempdb-database|tempdb, база данных]] (docs microsoft) * [[https://docs.microsoft.com/en-US/troubleshoot/sql/performance/recommendations-reduce-allocation-contention|Recommendations to reduce allocation contention in SQL Server tempdb database]] * [[https://www.mssqltips.com/sqlservertip/4829/tempdb-size-resets-after-a-sql-server-service-restart/|Tempdb size resets after a SQL Server service restart]] * [[https://www.sqlshack.com/how-to-detect-and-prevent-unexpected-growth-of-the-tempdb-database/|How to detect and prevent unexpected growth of the TempDB database]] * [[https://www.tune-it.ru/web/fender/blog/-/blogs/i-snova-tempdb-perenos-i-poleznye-skripty|и снова tempDB - перенос и полезные скрипты]] * [[https://www.se.com/ww/en/faqs/FA238216/|How to change the location of database TempDB files Tempdb.mdf and TempLog.ldf in SQL 2008 and 2012 from default location ?]] ===== Ссылки ===== * [[http://dbamastery.com/performance-tuning/maxdop-calculator/|MAXDOP Calculator]] * [[https://sql-ex.ru/blogs/?/Osnovy_Zhurnala_tranzakcij_v_SQL_Server.html|Основы журнала транзакций в SQL Server]] * [[https://minyurov.com/2016/07/24/mssql-tempdb-opt/|Оптимизация временной БД (tempdb)]] * [[https://www.tune-it.ru/web/fender/blog/-/blogs/otkazoustojcivost-ms-sql-failover-cluster-ili-alwayson-|Отказоустойчивость MS SQL: Failover Cluster или AlwaysOn?]] * [[https://sql-ex.ru/blogs/?/Arhitektura_Zhurnala_tranzakcij_SQL_Server.html|Архитектура журнала транзакций SQL Server]] * [[https://sql-ex.ru/blogs/?/Dannye_monitora_proizvoditelnosti_SQL_Server_vvedenie_i_ispolzovanie.html|Данные монитора производительности SQL Server: введение и использование]] * [[https://sql-ex.ru/blogs/?/Prisoedinenie_bazy_dannyh_bez_fajla_Zhurnala_tranzakcij.html|Присоединение базы данных без файла журнала транзакций]] * [[https://kuharbogdan.com/stati-po-1s/pochemu-rastet-log-v-ms-sql/|Почему растет LOG в MS SQL?]] {{tag>microsoft mssql sql}}