在T-SQL中分配变量时,SET和SELECT语句之间有什么区别?
我正在使用SQL Server 2008 Enterprise.我想看到任何活动的SQL Server连接,以及所有连接的相关信息,例如从哪个IP地址连接到哪个数据库或其他东西.
是否存在解决此问题的命令?
在SQL Server 2008中截断日期时间值(删除小时分钟和秒)的最佳方法是什么?
例如:
declare @SomeDate datetime = '2009-05-28 16:30:22'
select trunc_date(@SomeDate)
-----------------------
2009-05-28 00:00:00.000
Run Code Online (Sandbox Code Playgroud) 我想使用T-SQL将表移动到特定的Schema中?我正在使用SQL Server 2008.
CREATE TABLE [dbo].[user](
[userID] [int] IDENTITY(1,1) NOT NULL,
[fcode] [int] NULL,
[scode] [int] NULL,
[dcode] [int] NULL,
[name] [nvarchar](50) NULL,
[address] [nvarchar](50) NULL,
CONSTRAINT [PK_user_1] PRIMARY KEY CLUSTERED
(
[userID] ASC
)
) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)
如何fcode, scode, dcode使用t-sql和/或management studio?为列添加唯一约束?fcode, scode, dcode必须是独一无二的.
我在我的一个Sql(2008)存储过程中有以下代码执行完全正常:
CREATE PROCEDURE [dbo].[Item_AddItem]
@CustomerId uniqueidentifier,
@Description nvarchar(100),
@Type int,
@Username nvarchar(100),
AS
BEGIN
DECLARE @TopRelatedItemId uniqueidentifier;
SET @TopRelatedItemId =
(
SELECT top(1) RelatedItemId
FROM RelatedItems
WHERE CustomerId = @CustomerId
)
DECLARE @TempItem TABLE
(
ItemId uniqueidentifier,
CustomerId uniqueidentifier,
Description nvarchar(100),
Type int,
Username nvarchar(100),
TimeStamp datetime
);
INSERT INTO Item
OUTPUT INSERTED.* INTO @TempItem
SELECT NEWID(), @CustomerId, @Description, @Type, @Username, GETDATE()
SELECT
ItemId,
CustomerId,
@TopRelatedItemId,
Description,
Type,
Username,
TimeStamp
FROM
@TempItem
END
GO
Run Code Online (Sandbox Code Playgroud)
所以你们的问题是有可能做一些事情:
DECLARE @TempCustomer TABLE
(
CustomerId …Run Code Online (Sandbox Code Playgroud) 作为标题,我有一个已经填充150000条记录的现有表.我添加了一个Id列(当前为null).
我假设我可以运行查询以使用增量数填充此列,然后设置为主键并启用自动增量.这是正确的方法吗?如果是这样,我如何填写初始数字?
我需要编写一个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, I must not insert
-- the row and return FALSE
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO Bookings ... (omitted)
END
-- END TRANSACTION …Run Code Online (Sandbox Code Playgroud) 我刚刚在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 +服务器&EvtSrc =&的MSSQLServer EvtID = -1&LINKID = 20476
当我安装SQL Server 2008时,我让它使用SQLEXPRESS作为本地实例名称.据我所知,通过SQL Server配置管理器,SQL Server配置为允许远程连接.
当我访问它提到的帮助链接时,帮助页面提示以下内容:
好吧,据我所知,我的系统上没有SQL Server Browser服务(在MMC中查找一个,找不到一个).
并且SQL Server 2008中不存在SQL Server表面区域配置工具.在您的帮助文档中可以很好地使用Microsoft ;-).
我现在不知道该做什么.在升级到2008之后,我有很多工作,我希望能够完成这项工作(我正在与之合作的人在没有问题的情况下完成并运行它并告诉我这很容易 - 他对数据库的东西也更好了我上午).有谁知道什么可能是错的?我真的很感激.如果我不能在几个小时内完成这项工作,我将回到SQL Server 2005(如果这甚至可以工作,那么......).
编辑:我已经尝试关闭Windows防火墙,这没有帮助.另外,我注意到我的SQL Server 2008安装目录树下没有"数据"目录 - 安装时我可能设置了错误吗?
sql-server-2008 ×10
sql-server ×9
sql ×4
t-sql ×4
ssms ×2
alter-table ×1
datetime ×1
primary-key ×1
schema ×1
truncate ×1