Я подключаюсь к SQL-серверу с помощью pyodbc — ничего особенного.
Администратор базы данных отметил, что у меня уже давно выполняются запросы к БД, однако я знаю запрос Моя работа занимает от 1 до 3 секунд, потому что если я запускаю ее в SSMS, это занимает столько же времени.
Когда мы добавили трассировку в БД, кажется, что выполняются два запроса. . Приведенный ниже запрос, кажется, каким-то образом автоматически запускается pyodbc, что, я думаю, может быть инициализацией драйвера?
create procedure sys.sp_datatype_info_100 ( @data_type int = 0, @ODBCVer tinyint = 2 ) as declare @mintype int declare @maxtype int set @ODBCVer = isnull(@ODBCVer, 2) if @ODBCVer < 3 -- includes ODBC 1.0 as well set @ODBCVer = 2 else set @ODBCVer = 3 if @data_type = 0 begin select @mintype = -32768 select @maxtype = 32767 end else begin select @mintype = @data_type select @maxtype = @data_type end select TYPE_NAME = v.TYPE_NAME, DATA_TYPE = v.DATA_TYPE, PRECISION = v.PRECISION, LITERAL_PREFIX = v.LITERAL_PREFIX, LITERAL_SUFFIX = v.LITERAL_SUFFIX, CREATE_PARAMS = v.CREATE_PARAMS, NULLABLE = v.NULLABLE, CASE_SENSITIVE = v.CASE_SENSITIVE, SEARCHABLE = v.SEARCHABLE, UNSIGNED_ATTRIBUTE = v.UNSIGNED_ATTRIBUTE, MONEY = v.MONEY, AUTO_INCREMENT = v.AUTO_INCREMENT, LOCAL_TYPE_NAME = v.LOCAL_TYPE_NAME, MINIMUM_SCALE = v.MINIMUM_SCALE, MAXIMUM_SCALE = v.MAXIMUM_SCALE, SQL_DATA_TYPE = v.SQL_DATA_TYPE, SQL_DATETIME_SUB = v.SQL_DATETIME_SUB, NUM_PREC_RADIX = v.NUM_PREC_RADIX, INTERVAL_PRECISION = v.INTERVAL_PRECISION, USERTYPE = v.USERTYPE from sys.spt_datatype_info_view v where v.DATA_TYPE between @mintype and @maxtype and v.ODBCVer = @ODBCVer order by 2, 12, 11, 20
Вопрос: Кто-нибудь видел это раньше и знает что-нибудь об этом? Можно ли это отключить?
Я использую простой код, пример ниже.
import pyodbc
conn_string = "DRIVER={ODBC Driver 18 for SQL Server};SERVER=%SERVER%;DATABASE=%DATABASE%;Trusted_Connection=yes;MultiSubnetFailover=yes;TrustServerCertificate=yes;"
sql = "SELECT TOP 100 * FROM MY_DB"
conn = pyodbc.connect(conn_string)
cursor = conn.cursor()
cursor.execute(sql)
res = cursor.fetchall()
cursor.close()
conn.close()
Подробнее здесь: https://stackoverflow.com/questions/786 ... -procedure