如何指定我的应用程序应该使用跟踪标志参数启动SQL Server LocalDb?

Ian*_*ory 7 sql-server entity-framework localdb

我的应用程序使用LocalDb实例来存储它的数据.我注意到LocalDb分配标识的方式有些怪癖(这里有更多解释)我想避免.链接的答案解释了这可以通过设置SQL Server跟踪标志来完成,并解释如何为"全脂"SQL Server执行此操作.

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

Ric*_*ore 5

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

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

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12E.LOCALDB\MSSQLServer\
Run Code Online (Sandbox Code Playgroud)

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

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

通过SQLLOCALDB.EXE在命令提示符中运行,并stop作为参数和实例名称传入来停止LocalDB进程。例如:

C:\> sqllocaldb stop mssqllocaldb
Run Code Online (Sandbox Code Playgroud)

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

运行查询DBCC TRACESTATUS(),您应该看到存在跟踪标志272。例如:

C:\>sqlcmd -S (LocalDB)\MSSQLLocalDB -Q "DBCC TRACESTATUS();"
Run Code Online (Sandbox Code Playgroud)

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

高温超导