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

问题描述 投票:6回答:1

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

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

sql-server entity-framework localdb
1个回答
5
投票

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

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

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

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

在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服务器资源管理器来探索数据库。在任务管理器(sqlservr.exe)中杀死LocalDB进程,连接到VS2015中的数据库并手动添加新行会导致我的自动增量值跳过1000.添加上述注册表hack后,手动终止LocalDB进程导致下一个生成的标识值跳过。

HTH

© www.soinside.com 2019 - 2024. All rights reserved.