如何从SQL连接字符串设置查询超时

29 sql-server

我想从连接字符串设置querytimeout.不是连接超时,是否可能?

gbn*_*gbn 33

不是.这是按命令,而不是每个连接.

编辑,2013年5月

根据评论要求:

关于SQL Server(DBA.SE)中的命令和执行超时的更多注释.还有更多的东西:当连接关闭时,未提交的事务会发生什么?


小智 15

您始终能够通过 SqlClient 连接字符串指定连接超时,这适用于与数据库服务器建立连接,而不是执行命令/运行查询。默认连接超时为 15 秒。

随着 Microsoft.Data.SqlClient v2.1 的发布,引入了“命令超时”连接字符串属性,可以根据需要覆盖此属性的默认值 30 秒。因此,现在可以通过连接字符串设置默认命令超时。

为了在 EF Core 3 和 5 中使用此新功能,您必须通过将以下内容添加到项目文件中来添加对更新的 SqlClient 包的显式依赖项:

<PackageReference Include="Microsoft.Data.SqlClient" Version="2.1.0" />
Run Code Online (Sandbox Code Playgroud)

此外,您必须更新连接字符串以增加默认命令超时 - 请记住,这将适用于您的整个应用程序,除非通过设置 SqlCommand.CommandTimeout 属性在代码中覆盖。

连接字符串示例:

"YourDatabaseAlias": "Server={serverURL}; Initial Catalog={db}; Integrated Security=true; Command Timeout=60"
Run Code Online (Sandbox Code Playgroud)

上面的连接字符串将命令超时设置为 1 分钟(60 秒)。

希望这有用。


Ant*_*nes 5

请参阅: - 关于此主题的ConnectionStrings内容.没有默认命令超时属性.


raj*_*net 5

我在下面的连接字符串中尝试了参数命令超时的不同值,并且每次都按预期工作。

Data Source=Your_Db_Server;Initial Catalog=Your_DB;Integrated Security=true;TrustServerCertificate=true;Connect Timeout=600;Command Timeout=120
Run Code Online (Sandbox Code Playgroud)