我的应用程序使用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/