Questions tagged «sql-server-2008»

使用此标记可以解决针对Microsoft SQL Server 2008版本的特定问题。

11
如何立即终止/停止长的SQL查询?
我正在使用SQL Server 2008及其管理工作室。我执行了产生许多行的查询。我试图通过红色的“取消”按钮将其取消,但在过去的10分钟内仍未停止。通常会在3分钟内停止。 原因可能是什么?如何立即停止?

7
有没有办法访问SELECT语句中的“上一行”值?
我需要计算表的两行之间的列差。有什么办法可以直接在SQL中执行此操作?我正在使用Microsoft SQL Server 2008。 我正在寻找这样的东西: SELECT value - (previous.value) FROM table 假设“上一个”变量引用了最近选择的行。当然,通过这样的选择,我最终将在具有n行的表中选择n-1行,这可能不是,实际上正是我所需要的。 有可能吗?

6
如何授予自己对本地SQL Server实例的管理员访问权限?
我在本地计算机上安装了SQL Server 2008 R2。但是,由于权限(或缺少权限),我无法创建新数据库。 “创建数据库权限被拒绝” 因此,我尝试将管理员权限分配给当前登录名 “用户无权执行此操作。” 我还尝试创建一个具有管理员权限但没有运气的新登录名。如何授予自己管理员权限,以便创建数据库?我可以重新安装,但我不愿意。

3
如何捕获死锁引起的SqlException?
我想从.NET 3.5 / C#应用程序捕获,SqlException但前提是它是由 SQL Server 2008实例上的死锁引起的。 典型的错误信息是 Transaction (Process ID 58) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. 但是,它似乎不是针对此异常的已记录错误代码。 针对他们的消息中存在的Deadlock关键字过滤异常似乎是实现此行为的非常难看的方法。有人知道这样做的正确方法吗?

2
如何在单个SELECT语句中具有多个公用表表达式?
我正在简化一个复杂的select语句,因此以为我会使用公用表表达式。 声明单个CTE可以正常工作。 WITH cte1 AS ( SELECT * from cdr.Location ) select * from cte1 是否可以在同一SELECT中声明和使用多个cte? 即此SQL给出了一个错误 WITH cte1 as ( SELECT * from cdr.Location ) WITH cte2 as ( SELECT * from cdr.Location ) select * from cte1 union select * from cte2 错误是 Msg 156, Level 15, State …

6
在SQL Server中使用RegEx
我正在寻找如何根据以下RegEx设置/参数使用RegEx替换/编码文本: RegEx.IgnoreCase = True RegEx.Global = True RegEx.Pattern = "[^a-z\d\s.]+" 我在RegEx上看到了一些示例,但是对于如何在SQL Server中以相同方式应用它感到困惑。任何的意见都将会有帮助。谢谢。



4
SQL Server数据库还原错误:指定的转换无效。(SqlManagerUI)
我将SQL Server 2008 R2 Standard(版本10.50.1600.1)用于我的生产网站,并将SQL Server Express版本和具有Advanced Services(v10.50.1600.1)的localhost作为数据库使用。 几天后,我的SQL Server崩溃了,我不得不在本地主机上安装新的2008 R2 Express版本。当我还原一些从Express版本获取的旧版本时,它工作正常,但是当我尝试.bak从生产服务器获取的文件中恢复数据库时,会导致以下错误: 错误:指定的转换无效。(SqlManagerUI) 当我尝试使用命令还原数据库时 Use Master Go RESTORE DATABASE Publications FROM DISK = 'C:\Publications.bak' WITH MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path MOVE 'AlPublications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf' 它产生一个不同的错误 消息3154,级别16,状态4,第1行 备份集保存除现有“出版物”数据库以外的数据库备份。 消息3013,级别16,状态1,第1行 RESTORE DATABASE正在异常终止。 我已经交叉检查了版本。如下图所示,它们似乎都与我匹配 以前,我能够将数据库从标准版还原为快速版,但现在失败了。我删除了数据库并尝试重新创建它。那也失败了。 我不确定自己在做什么错。在此方面,我将不胜感激 该问题已解决,因为.bak文件似乎已损坏。当我尝试使用其他文件进行工作时。

11
指数数组的边界之外。(Microsoft.SqlServer.smo)
我正在使用SQL Server 2008 R2。一切正常。但是最近,我更改了托管服务器,并得知它们已安装SQL Server 2012在服务器上。 现在,问题是通过SQL Server 2008 R2,与Server Database连接后,当我单击任何表名或存储过程时,我会收到错误消息:Index was outside the bounds of the array. (Microsoft.SqlServer.smo) 所以,这是我方面还是服务器方面的任何问题?以及如何预防此问题?

7
如何以毫秒为单位在SQL Server中打印GETDATE()?
我想在SQL Server 2008中打印GETDATE(),我需要的时间以毫秒为单位(这是出于调试目的-查找sp的执行时间) 我发现这种差异 SELECT GETDATE()返回2011-03-15 18:43:44.100 print GETDATE()返回2011年3月15日下午6:44 我认为SQL Server在打印功能中会自动进行类型转换。 我需要像这样打印日期 2011-03-15 18:43:44.100 谢谢你的帮助。

7
向表中添加一列,其默认值等于现有列的值
如何在默认值等于现有列值的情况下向SQL Server表中添加列? 我尝试了以下T-SQL语句: ALTER TABLE tablename ADD newcolumn type NOT NULL DEFAULT (oldcolumn) 但它给出了一个错误: 在这种情况下,不允许使用名称“ oldcolumn”。有效表达式是常量,常量表达式和(在某些情况下)变量。不允许使用列名。

13
列出有关SQL Server中所有数据库文件的信息
是否可以列出有关SQL Server上所有数据库的文件(MDF / LDF)的信息? 我想得到一个列表,显示哪个数据库正在使用本地磁盘上的哪些文件。 我试过的 exec sp_databases 所有数据库 select * from sys.databases 显示有关每个数据库的很多信息-但不幸的是,它没有显示每个数据库使用的文件。 select * from sys.database_files显示master数据库的mdf / ldf文件-但不显示其他数据库

2
对UPDLOCK,HOLDLOCK感到困惑
在研究表提示的使用时,我遇到了两个问题: 我应该使用哪些锁定提示(T-SQL)? HOLDLOCK对UPDLOCK有什么影响? 对这两个问题的回答都表明,使用时(UPDLOCK, HOLDLOCK),其他进程将无法读取该表上的数据,但是我没有看到这一点。为了进行测试,我创建了一个表并启动了两个SSMS窗口。在第一个窗口中,我运行了一个使用各种表提示从表中选择的事务。在事务运行时,我从第二个窗口运行了各种语句,以查看哪些将被阻止。 测试表: CREATE TABLE [dbo].[Test]( [ID] [int] IDENTITY(1,1) NOT NULL, [Value] [nvarchar](50) NULL, CONSTRAINT [PK_Test] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] 从SSMS窗口1: BEGIN TRANSACTION SELECT …

5
将数值转换为数值类型的算术溢出错误
每当我运行此查询时,我都会不断收到此错误消息: Msg 8115, Level 16, State 8, Line 33 Arithmetic overflow error converting numeric to data type numeric. The statement has been terminated. 但是,如果我将创建表更改为(7,0),则不会收到错误消息,但是我需要将数据显示为小数。我试过8,3不起作用。 有谁能帮助我完成这项工作?任何帮助将不胜感激。 DECLARE @StartDate AS DATETIME DECLARE @StartDate_y AS DATETIME DECLARE @EndDate AS DATETIME DECLARE @temp_y AS DATETIME SET @temp_y = Dateadd(yy, Datediff(yy, 0, Getdate()), 0) SET …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.