Довольно странная проблема ... когда я запускаю свое .NET-приложение в первый раз после перезагрузки компьютера, запросы SQL Server очень медленные ... когда я приостанавливаю отладчик, я замечаю, что он зависает при получении ответа от запроса . Это происходит только при подключении к удаленному серверу SQL (2008) ... если я подключаюсь к одному из них на моем локальном компьютере, все в порядке. Кроме того, если я перезапущу приложение, оно будет работать быстро, даже на удаленном сервере SQL, и последующие запуски тоже будут в порядке. Единственная проблема - когда я впервые подключаюсь к удаленному SQL-серверу после перезагрузки компьютера. Более того, я даже заметил такое же точное поведение со сторонним приложением (также .NET), которое также подключается к удаленному серверу SQL.
Еще одна информация ... это только начало происходить с тех пор, как я обновил свою машину с XP до Win7 (64 бит). Кроме того, другие разработчики из моей команды, которые обновились до Win7, наблюдают такое же поведение (как с приложением, которое мы разрабатываем, так и со сторонним приложением .NET).
(скопировано из https://stackoverflow.com/questions/2014814/sql-server-queries-are-really-slow-only-on-first-run )
В Windows Vista, Windows 7 и SQL Server 2008 метод подключения отличается от метода подключения XP и SQL Server 2008.
Когда вы подключаетесь к серверу Windows 2008, на котором запущен SQL 2008 из Vista или Windows 7, Windows пытается согласовать подключение с помощью интерфейса поставщика поддержки безопасности [SSPI]. Иногда вы будете видеть проблемы, подробно описанные в http://support.microsoft.com/kb/811889.
Насколько я понимаю, переговоры об этом подключении задерживаются. Как вы можете видеть в статье базы знаний, есть способы заставить соединение использовать стандартное согласование NTLM.
Я бы попытался заставить NTLM, добавив SSPI = NTLM в строку подключения. Если вы больше не получаете снижение начальной скорости, это, вероятно, указывает на вашу проблему.
Проверьте настройки подключения клиента SQL (сначала TCP / IP?)
Добавьте запись на свой компьютер SQL 2008 в свой hosts
файл. Если это дает вам высокую производительность после перезагрузки, вы столкнулись с проблемой разрешения имен.
Вы подключаетесь к этой машине по IP или имени хоста?
Что произойдет, если вы обращаетесь к этому компьютеру исключительно по его IP-адресу? (через строку подключения или SQL Management Studio)