我的应用程序使用LocalDb实例存储其数据。我注意到LocalDb分配了我想避免的标识(解释更多here)的方式中的一个奇怪现象。链接的答案说明可以通过设置SQL Server跟踪标志来完成此操作,并说明如何针对“全胖” SQL Server执行此操作。

是否可以在LocalDb上设置跟踪标志?当我的应用程序按需启动它时,可以通过连接字符串完成此操作吗?

最佳答案

我有一个类似的问题,并相信我有解决方法...

启动Regedit并找到您的localdb注册表项。对我来说,这是

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12E.LOCALDB\MSSQLServer\

在此键中,创建另一个名为参数的键。

在Parameters键中,创建一个名为 SQLArg0 的字符串(REG_SZ),并将其值设置为 -T272

通过在命令提示符下运行SQLLOCALDB.EXE并输入stop作为参数和实例名称来停止LocalDB进程。例如:
C:\> sqllocaldb stop mssqllocaldb

然后通过连接到本地数据库来使LocalDB自动启动。

运行查询 DBCC TRACESTATUS(),您应该看到存在跟踪标志272。例如:
C:\>sqlcmd -S (LocalDB)\MSSQLLocalDB -Q "DBCC TRACESTATUS();"

为了测试这一点,我一直在使用VS2015服务器浏览器来浏览数据库。在任务管理器( sqlservr.exe )中杀死LocalDB进程,在VS2015中连接到数据库并手动添加新行会导致我的自动增量值跳到1000。在添加了上述注册表黑客之后,手动终止了LocalDB进程不会导致下一个生成的标识值跳过。

高温超导

关于sql-server - 如何指定我的应用程序应使用跟踪标志参数启动SQL Server LocalDb?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39043952/

10-11 06:38