56 lines
2.4 KiB
Python
56 lines
2.4 KiB
Python
import sys
|
||
import pyodbc
|
||
from config import ZUP_SQL_CONFIG
|
||
|
||
def test_connection():
|
||
print("=" * 60)
|
||
print("🧪 ПРОВЕРКА ПОДКЛЮЧЕНИЯ К MS SQL SERVER (1С:ЗУП)")
|
||
print("=" * 60)
|
||
print(f" • Сервер: {ZUP_SQL_CONFIG['server']}")
|
||
print(f" • База: {ZUP_SQL_CONFIG['database']}")
|
||
print(f" • Логин: {ZUP_SQL_CONFIG['user']}")
|
||
print(f" • Драйвер: {ZUP_SQL_CONFIG['driver']}")
|
||
print("-" * 60)
|
||
|
||
conn_str = (
|
||
f"DRIVER={ZUP_SQL_CONFIG['driver']};"
|
||
f"SERVER={ZUP_SQL_CONFIG['server']};"
|
||
f"DATABASE={ZUP_SQL_CONFIG['database']};"
|
||
f"UID={ZUP_SQL_CONFIG['user']};"
|
||
f"PWD={ZUP_SQL_CONFIG['password']};"
|
||
f"TrustServerCertificate={ZUP_SQL_CONFIG['trust_server_certificate']};"
|
||
f"Encrypt={ZUP_SQL_CONFIG['encrypt']};"
|
||
)
|
||
|
||
try:
|
||
print("⏳ Установка соединения...")
|
||
with pyodbc.connect(conn_str, timeout=10) as conn:
|
||
cursor = conn.cursor()
|
||
|
||
# 1. Проверка версии SQL Сервера
|
||
cursor.execute("SELECT @@VERSION;")
|
||
db_version = cursor.fetchone()[0]
|
||
print("✅ Подключение успешно установлено!\n")
|
||
print(f"📋 Версия MS SQL Server:\n{db_version.splitlines()[0]}\n")
|
||
|
||
# 2. Проверка доступа к таблице физических лиц _Reference299
|
||
cursor.execute("SELECT COUNT(*) FROM dbo._Reference299 WITH (NOLOCK);")
|
||
count_phys = cursor.fetchone()[0]
|
||
print(f"📊 Записей в таблице физлиц (_Reference299): {count_phys} шт.")
|
||
|
||
# 3. Проверка доступа к регистру кадровых состояний _InfoRg16921
|
||
cursor.execute("SELECT COUNT(*) FROM dbo._InfoRg16921 WITH (NOLOCK);")
|
||
count_states = cursor.fetchone()[0]
|
||
print(f"📊 Записей в регистре состояний (_InfoRg16921): {count_states} шт.")
|
||
|
||
print("\n🎉 Все проверки успешно пройдены!")
|
||
|
||
except pyodbc.Error as ex:
|
||
sqlstate = ex.args[0] if ex.args else "UNKNOWN"
|
||
print("\n❌ ОШИБКА ПОДКЛЮЧЕНИЯ!")
|
||
print(f"Код ошибки: {sqlstate}")
|
||
print(f"Детали:\n{ex}")
|
||
sys.exit(1)
|
||
|
||
if __name__ == "__main__":
|
||
test_connection() |