我有一个Test带有列的表的MS SQL 2005数据库ID.ID是一个标识列.
我在这个表中有行,并且所有行都有相应的ID自动增量值.
现在我想更改此表中的每个ID,如下所示:
ALTER TABLE Test NOCHECK CONSTRAINT ALL
set identity_insert ID ON
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,我收到一个错误:
ALTER TABLE Test NOCHECK CONSTRAINT ALL
set identity_insert ID ON
Run Code Online (Sandbox Code Playgroud)
我试过这个:
ALTER TABLE Test NOCHECK CONSTRAINT ALL
set identity_insert ID ON
Run Code Online (Sandbox Code Playgroud)
但这并没有解决问题.
我需要将标识设置为此列,但我还需要不时更改值.所以我的问题是如何完成这项任务.
t-sql sql-server identity sql-server-2005 sql-server-2005-express
我试图在Windows Server 2003上部署我的网站.我错过了以下错误消息中的内容或错误,我该如何纠正?谢谢
我收到错误消息:
已成功与服务器建立连接,但在登录过程中发生错误.(提供程序:共享内存提供程序,错误:0 - 管道的另一端没有进程.)描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:System.Data.SqlClient.SqlException:已成功与服务器建立连接,但在登录过程中发生错误.(提供者:共享内存提供者,错误:0 - 管道的另一端没有进程.)
来源错误:
在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.
堆栈跟踪:
[SqlException(0x80131904):已成功与服务器建立连接,但在登录过程中发生错误.(提供者:共享内存提供者,错误:0 - 没有进程在管道的另一端.)]
System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)+1019
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection) owningConnection)+108
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection,DbConnectionFactory connectionFactory)+126
System.Data.SqlClient.SqlConnection.Open()+ 125
NHibernate.Connection.DriverConnectionProvider.GetConnection()+ 104
NHibernate.Tool. hbm2ddl.SuppliedConnectionProviderConnectionHelper.Prepare()+15 NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.GetReservedWords(Dialect dialect,IConnectionHelper connectionHelper)+89
NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.Update(ISessionFactory sessionFactory)+80
NHibernate.Impl.SessionFactoryImpl..ctor (配置cfg,IMapping映射,设置设置,EventListeners侦听器)+599
NHibernate.Cfg.Configuration.BuildSessionFactory()+ 104
M C:\ Dev\Code\API\Data\SessionManager.cs中的yProject.API.Data.SessionManager..cctor():27
我有一个不带参数的存储过程,它返回两个字段.存储过程汇总应用于租户的所有事务,并返回租户的余额和ID.
我想使用它返回的记录集和查询,我需要在租户的id上加入它的结果.
这是我目前的查询:
SELECT t.TenantName, t.CarPlateNumber, t.CarColor, t.Sex, t.SSNO, t.Phone, t.Memo,
u.UnitNumber,
p.PropertyName
FROM tblTenant t
LEFT JOIN tblRentalUnit u
ON t.UnitID = u.ID
LEFT JOIN tblProperty p
ON u.PropertyID = p.ID
ORDER BY p.PropertyName, t.CarPlateNumber
Run Code Online (Sandbox Code Playgroud)
存储过程是这样的:
SELECT tenant.ID AS TenantID, SUM(ISNULL(trans.Amount,0)) AS TenantBalance FROM tblTenant tenant
LEFT JOIN tblTransaction trans
ON tenant.ID = trans.TenantID
GROUP BY tenant.ID
Run Code Online (Sandbox Code Playgroud)
我想从存储过程中添加余额.
我怎样才能做到这一点?
这是我正在使用的查询:
DELETE TB1.*, TB2.*
FROM TB1
INNER JOIN TB2 ON TB1.PersonID = TB2.PersonID
WHERE (TB1.PersonID)='2'
Run Code Online (Sandbox Code Playgroud)
它在MS Access中工作正常但在SQL Server Express 2005中收到错误(','.附近的语法不正确).
怎么解决?请帮忙.
有谁知道如何在MS SQL Server 2005数据库中查看包含二进制数据的字段的内容?
我尝试在Windows 8上安装SQL Server 2005 Express SP3 x64,但安装程序给出了一个错误:
无法找到产品Microsoft SQL Server本机客户端的安装包.使用安装包'sqlncli_x64.msi'的有效副本再次尝试安装

我该如何解决这个问题?
我正在尝试将tableadapter添加到我的SQL Server 2005 Express中的存储过程.但是,存储过程使用名为#temp的临时表.创建表适配器时,Visual Studio会抱怨"未知对象'#temp'"并表示存储过程返回0列.这是有问题的,因为我使用带有水晶报表的存储过程,并且需要这些列.
我怎样才能解决这个问题?
t-sql stored-procedures sql-server-2005-express strongly-typed-dataset visual-studio-2008
我正在尝试在我的sql server 2005 express版中恢复数据库.我知道要恢复数据库,我需要让它成为单个用户.我给这个命令让它成为单个用户
USE [master]
ALTER DATABASE database_name SET SINGLE_USER WITH ROLLBACK IMMEDIATE
Run Code Online (Sandbox Code Playgroud)
这个命令执行得很正常,我甚至可以在这个数据库的对象资源管理器中看到一个小图像,显示这个现在是单个用户.
现在我尝试通过以下步骤恢复数据库 - >右键单击数据库和任务,然后恢复数据库.我正在选择备份文件所在的路径,然后单击"还原".
但我仍然得到这个错误"因为数据库正在使用中无法获得独占访问权限(microsoft.sqlserver.smo).我错过了什么.我用Google搜索了所有网站,并且所有网站都建议数据库需要在单个用户中模式,没有别的.
我没有尝试分离和附加数据库方法.我以前从未这样做过,想知道这样做是否安全.
编辑:谢谢你的答案.两个人都建议我回答相同,所以我选择了一个答案.
我甚至选择从选项覆盖现有数据库.
寻找以编程方式或其他方式将SQL 2005 Express Edition的新实例添加到已安装实例的系统的方法.传统上,你运行Micrsoft的安装程序,就像我在下面的命令行中一样,它可以解决问题.在我的安装程序中执行命令不是问题,如果他们已经安装了SQL Express,那么更多的是拖动我不需要的40 MB MS-SQL安装程序.这是我的安装程序当前执行的内容:
SQLEXPR32.EXE /qb ADDLOCAL=ALL INSTANCENAME=<instancename> SECURITYMODE=SQL SAPWD=<password> SQLAUTOSTART=1 DISABLENETWORKPROTOCOLS=0
Run Code Online (Sandbox Code Playgroud)
我不需要启动此命令的帮助,而是在没有实际再次运行完整安装程序的情况下添加新的SQL 2005 Express实例的适当方法.
我会详细说明为什么我要这样做,但我只是让每个人都感到满意.可以说,有这种能力创建一个新实例而没有时间重新安装SQL Express等,这将极大地帮助我部署我的应用程序和它的安装程序.如果对任何人有任何影响,我会在此安装项目中使用NSIS和Advanced Installer的组合.
command-line install instance sql-server-2005-express sql-server-express
我想知道.我有一个复杂的查询,它在大约3秒内在SQL Server 2005 Express版本中运行.
主表有大约300k行.
当我添加
ROW_NUMBER() OVER (ORDER BY date_column)
Run Code Online (Sandbox Code Playgroud)
它date_column是一个datetime列需要123秒.
如果我做
ROW_NUMBER() OVER (ORDER BY string_title)
Run Code Online (Sandbox Code Playgroud)
它再次在3秒内运行.
我在datetime列上添加了一个索引.没变.还有123秒.
然后我尝试了:
ROW_NUMBER() OVER (ORDER BY CAST(date_column AS int))
Run Code Online (Sandbox Code Playgroud)
并且查询再次在3秒内运行.
由于转换需要时间,为什么SQL Server的行为如下?
更新:似乎ROW_NUMBER完全忽略我的WHERE语句并为所有可用条目构建行列列表?任何人都可以证实吗?
在这里,我在SQL Management Studio中复制了一个更好的可读(仍然是逻辑:)):
SELECT ROW_NUMBER() OVER (ORDER BY xinfobase.lid) AS row_num, *
FROM xinfobase
LEFT OUTER JOIN [xinfobasetree] ON [xinfobasetree].[lid] = [xinfobase].[xlngfolder]
LEFT OUTER JOIN [xapptqadr] ON [xapptqadr].[lid] = [xinfobase].[xlngcontact]
LEFT OUTER JOIN [xinfobasepvaluesdyn] ON [xinfobasepvaluesdyn].[lparentid] = [xinfobase].[lid]
WHERE (xinfobase.xlngisdeleted=2
AND xinfobase.xlinvalid=2) …Run Code Online (Sandbox Code Playgroud) sql ×4
sql-server ×4
t-sql ×2
asp.net-mvc ×1
binary-data ×1
command-line ×1
identity ×1
install ×1
instance ×1
performance ×1