Questions tagged «sql-server-2008»

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

11
检查是否存在行,否则插入
我需要编写一个T-SQL存储过程来更新表中的一行。如果该行不存在,则将其插入。所有这些步骤都由事务包装。 这是用于预订系统的,因此它必须是原子性和可靠的。如果已提交交易并预订了航班,则必须返回true。 我是T-SQL的新手,不确定如何使用@@rowcount。这是我到目前为止所写的。我在正确的道路上吗?我相信这对您来说是一个简单的问题。 -- BEGIN TRANSACTION (HOW TO DO?) UPDATE Bookings SET TicketsBooked = TicketsBooked + @TicketsToBook WHERE FlightId = @Id AND TicketsMax < (TicketsBooked + @TicketsToBook) -- Here I need to insert only if the row doesn't exists. -- If the row exists but the condition TicketsMax is violated, …


10
如何在SQL Server中还原到其他数据库?
我有一个星期前的Database1备份。备份每周在调度程序中完成,我得到一个.bak文件。现在,我想弄弄一些数据,因此需要将其还原到另一个数据库Database2中。 我已经看到了这个问题:在同一台PC中使用不同的名称还原SQL Server数据库,建议的步骤是重命名原始db,但是由于我不在生产服务器中,因此无法使用该选项,并且我不能真正做到这一点。 还有其他方法可以还原它Database2,或者至少如何浏览该.bak文件的数据吗? 谢谢。 ps:上面链接的第二个答案看起来很有希望,但它总是以错误终止: 还原文件列表异常终止

11
如何连接到SQL Server 2008 Express的本地实例
我刚刚在Vista SP1计算机上安装了SQL Server 2008 Express。我以前在这里安装了2005,并在旧的SQL Server Management Studio Express中使用了它。我能够毫无问题地连接到我的PC-NAME \ SQLEXPRESS实例(不,PC-NAME不是我的计算机名;-)。 我卸载了2005和SQL Server Management Studio Express。然后,我在计算机上安装了SQL Server 2008 Express,并选择让它安装SQL Server Management Studio Basic。 现在,当我尝试连接到PC-NAME \ SQLEXPRESS(像往常一样使用Windows身份验证)时,收到以下消息: 无法连接到PC-NAME \ SQLEXPRESS。建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称正确,并且已将SQL Server配置为允许远程连接。(提供者:SQL网络接口,错误:26-错误指定服务器/实例的位置)(Microsoft SQL Server,错误:-1)有关帮助,请单击:http : //go.microsoft.com/fwlink?ProdName= Microsoft+SQL + Server&EvtSrc = MSSQLServer&EvtID = -1&LinkId = 20476 安装SQL Server 2008时,我使用SQLEXPRESS作为本地实例名称。据我所知,通过SQL Server配置管理器,SQL Server配置为允许远程连接。 当我转到其中提到的帮助链接时,帮助页面会提出以下建议: …




3
如何在SQL Server 2008中使用表别名编写UPDATE SQL?
我有一个非常基本的UPDATE SQL- UPDATE HOLD_TABLE Q SET Q.TITLE = 'TEST' WHERE Q.ID = 101; 该查询运行良好的Oracle,Derby,MySQL-但它在SQL Server 2008中失败 与以下错误: “消息102,级别15,状态1,行1'Q'附近的语法不正确。 如果我从SQL中删除所有出现的别名“ Q”,那么它将起作用。 但是我需要使用别名。


9
多语句表值函数与内联表值函数
举例说明,以防万一: 内联表值 CREATE FUNCTION MyNS.GetUnshippedOrders() RETURNS TABLE AS RETURN SELECT a.SaleId, a.CustomerID, b.Qty FROM Sales.Sales a INNER JOIN Sales.SaleDetail b ON a.SaleId = b.SaleId INNER JOIN Production.Product c ON b.ProductID = c.ProductID WHERE a.ShipDate IS NULL GO 多语句表值 CREATE FUNCTION MyNS.GetLastShipped(@CustomerID INT) RETURNS @CustomerOrder TABLE (SaleOrderID INT NOT NULL, CustomerID …


2
我可以使用多个“ with”吗?
例如: With DependencedIncidents AS ( SELECT INC.[RecTime],INC.[SQL] AS [str] FROM ( SELECT A.[RecTime] As [RecTime],X.[SQL] As [SQL] FROM [EventView] AS A CROSS JOIN [Incident] AS X WHERE patindex('%' + A.[Col] + '%', X.[SQL]) > 0 ) AS INC ) With lalala AS ( SELECT INC.[RecTime],INC.[SQL] AS [str] FROM ( SELECT …

12
sql查询返回两个表之间的差异
我试图比较两个表,SQL Server,以验证一些数据。我想返回两个表中的所有行,其中数据在一个或另一个中。本质上,我想展示所有差异。为此,我需要检查三个数据,名字,姓氏和产品。 我对SQL还是相当陌生,似乎我发现的许多解决方案都过于复杂。我不必担心NULL。 我首先尝试这样的事情: SELECT DISTINCT [First Name], [Last Name], [Product Name] FROM [Temp Test Data] WHERE ([First Name] NOT IN (SELECT [First Name] FROM [Real Data])) 不过,我无法继续进行此操作。 谢谢! 编辑: 根据@treaschf的回答,我一直在尝试使用以下查询的变体: SELECT td.[First Name], td.[Last Name], td.[Product Name] FROM [Temp Test Data] td FULL OUTER JOIN [Data] AS d ON …

15
如何删除SQL Server数据库中的所有表?
我正在尝试编写一个脚本,该脚本将完全清空SQL Server数据库。这是我到目前为止的内容: USE [dbname] GO EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all' EXEC sp_msforeachtable 'DELETE ?' 在Management Studio中运行它时,我得到: 命令已成功完成。 但是当我刷新表格列表时,它们仍然存在。我究竟做错了什么?

10
将主键添加到现有表
我有一个名为的现有表Persion。在此表中,我有5列: persionId 名称 PMid 说明 帕姆特 当我创造了这个表,我设置PersionId和Pname作为主键。 我现在想在主键-PMID中再增加一列。我该如何写ALTER声明来做到这一点?(表中已经有1000条记录)

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.