我的应用程序使用LocalDb实例来存储它的数据。我注意到LocalDb分配标识的方式很奇怪(解释更多here),我想避免。链接的答案解释说,这可以通过设置SQL Server跟踪标志来完成,并解释如何为"完整脂肪" SQL Server。
是否可以在LocalDb上设置跟踪标志?当我的应用程序按需启动它时,可以通过连接字符串来完成吗?
答案 0 :(得分:5)
我有类似的问题并相信我有一个解决方法......
启动Regedit并找到您的localdb注册表项。对我来说这是
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12E.LOCALDB\MSSQLServer\
在此键中创建另一个名为参数的键。
在Parameters键中创建一个名为 SQLArg0 的字符串(REG_SZ),并将其值设置为 -T272 。
通过在命令提示符中运行SQLLOCALDB.EXE
来停止LocalDB进程,并传入stop
作为参数和实例的名称。例如:
C:\> sqllocaldb stop mssqllocaldb
然后通过连接到其上的数据库使LocalDB自动启动。
运行查询 DBCC TRACESTATUS(),您应该看到跟踪标志272存在。例如:
C:\>sqlcmd -S (LocalDB)\MSSQLLocalDB -Q "DBCC TRACESTATUS();"
为了测试这一点,我一直在使用VS2015服务器资源管理器来浏览数据库。在任务管理器中杀死LocalDB进程( sqlservr.exe ),连接到VS2015中的数据库并手动添加新行会导致我的自动增量值跳过1000.添加上述注册表黑客后,手动终止LocalDB进程不会导致下一个生成的标识值跳过。
HTH