在带有数据的 sql-server 数据库中,我有几个类型为 的列datetimeoffset(7)。现在我想将类型的精度部分更改为datetimeoffset(0).
如果不创建所需类型/精度的新列并重命名该列,这可能吗?
我使用 SQL Server Management Studio 和代码来解决方案(或者说不,这是不可能的)。
我有一年的库存数据,我想提取每个月数据的第一天和最后一天。做这个的最好方式是什么?
我有四个大维度,其中一个维度不会改变,特定维度也不需要处理。
那么,单独处理三个维度会更新多维数据集,还是我每次都需要处理整个多维数据集(正在处理所有维度)?
我的机器上托管了一个数据库,我希望同事能够通过我创建的程序访问和编辑该数据库。
我当前的连接字符串是:
Server=MyMachine;Database=MyDatabase;Integrated Security=True;
Run Code Online (Sandbox Code Playgroud)
为了让另一个用户访问它,我必须:
运行脚本:
USE Database
GRANT SELECT, INSERT, UPDATE, DELETE TO [Username]
GO
Run Code Online (Sandbox Code Playgroud)我如何配置它以便我的工作网络上的每个人(或 Windows 用户名以“ MyCompany\”开头的每个人)都可以默认拥有这些权限?这样我就不必手动添加每个新人。
我想创建一个触发器,它并不如他的名字删除客户Peter。我怎样才能做到这一点?
CREATE TRIGGER trgCUSTOMER ON customer
FOR DELETE
AS
BEGIN
IF (SELECT name FROM deleted) not like 'Peter'
BEGIN
delete from customer where name = (select name from deleted);
END
END;
Run Code Online (Sandbox Code Playgroud) 我刚刚遇到一个查询:
INSERT [TableName] SELECT * FROM [TableName]
Run Code Online (Sandbox Code Playgroud)
请注意,这是同一张表。这个查询导致我的一个测试数据库严重阻塞(我想删除它但不能,这让我调查了这个问题)。
锁类型为 LCK_M_X。我无法终止会话 - 我收到以下消息:
PID 56:事务回滚正在进行中。预计回滚完成:27%。估计剩余时间:5715216 秒。
我不想等待回滚完成估计 2 个月。数据库的事务隔离级别是READ COMMITED。
是否可以终止此会话?如果您在关键任务数据库之一中发现这样的查询,您应该如何行动?
我在这些服务器上有 SQL Server 2008 R2 SP2 和 SQL Server 2012 SP2。
我有一个数据库,其中有很多堆索引超过 90% 的碎片。
轻松修复这些堆索引的最佳选择是什么?
我一般是 SQL 新手,所以我在设计的一些存储过程中遇到了一些问题。我的程序接受 3 个参数。位置(或表名基本上是 varchar)、房间号 (varchar) 和 'xxx-xxxx' 形式的电话号码 (char)。这是该过程的代码。
ALTER PROCEDURE [dbo].[AddPhoneNumberToRoom]
@Location varchar(25),
@Room varchar(10),
@PhoneNumber char(8)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @String varchar(100);
SELECT @String = ' UPDATE ' + @Location +
' SET PhoneNumber = ' + @PhoneNumber +
' WHERE Room = ' + @Room;
EXEC(@String);
END
Run Code Online (Sandbox Code Playgroud)
我收到的错误是:
UPDATE 语句与 FOREIGN KEY 约束“FK_Apartments_PhoneNumbers”冲突。冲突发生在数据库“CMPhone”、表“dbo.PhoneNumbers”、列“PhoneNumber”中。
电话号码在 PhoneNumber 表中,所以当我这样做时:
UPDATE Apartments SET PhoneNumber='123-4567' WHERE Room='2'
Run Code Online (Sandbox Code Playgroud)
它工作得很好。该PhoneNumbers表还看起来是这样的,只是在它的一个数字。
PhoneNumber
-----------
123-4567
Run Code Online (Sandbox Code Playgroud) 我有一个返回以下数据集的查询:
RELATIONid MAPid D1id D2id D3id
4999 4999 626 1250 7
5000 5000 626 1250 8
Run Code Online (Sandbox Code Playgroud)
对于下一步,我需要将这些数据集绑定到树视图(层次结构)中。我需要将此数据集转换为以下内容:
Nodeid ParentNodeid Header
626 null D1
1250 626 D2
7 1250 D3
8 1250 D3
Run Code Online (Sandbox Code Playgroud)
我如何从原始数据集中实现这些结构?
我还有一个问题要问,数据结构比前一个复杂(一点点)。假设我有这样的示例数据集:
RELATIONid MAPid D1id D2id D3id
4999 4999 626 1250 7
5000 5000 626 1250 8
5001 5001 627 1300 10
5002 5002 627 1300 12
5003 5003 628 1400 15
Run Code Online (Sandbox Code Playgroud)
从以下数据集中,我们有 3 个 MainParent:626, 627, 628并且转换(交叉应用)输出期望将是这样的:
Nodeid ParentNodeid Header
626 null D1
1250 626 …Run Code Online (Sandbox Code Playgroud) 在我的代码中,我使用select * into #tempTable. 临时表包含大量记录,我需要在代码中多次从中检索数据,因此我在其上创建了聚集索引。但不知何故,我没有按照创建的索引以正确的顺序获取数据。
我知道我可以简单地通过放置order by子句来做到这一点,但我的问题是为什么即使我强制优化器使用特定索引,我也没有以正确的顺序获取数据?
下面是我的示例代码:
----------- Sample code ----------------------------
;with CTE1
as (
select col1
,col2
,-- - -- - - from table1
union
select col1
,col2
,-- - -- - - from table2
-- few more tables in union --
)
, CTE2
as (
select *
,RowNumber = RowNumber()
over (order by case
when @sortOrder = 0
then case
when @sortColumn = 'Date'
then [tdate]......some more dynamic order by conditions..........
end …Run Code Online (Sandbox Code Playgroud) sql-server ×10
cube ×1
delete ×1
dimension ×1
dynamic-sql ×1
hierarchy ×1
locking ×1
olap ×1
performance ×1
permissions ×1
security ×1
ssas ×1
ssms ×1
t-sql ×1
trigger ×1