我有一个对数据库具有以下权限的 SQL 帐户:

db_executor您看到此帐户所属的角色是由以下脚本创建的:
CREATE ROLE [db_executor] AUTHORIZATION [dbo]
GO
GRANT EXECUTE TO [db_executor]
GO
Run Code Online (Sandbox Code Playgroud)
当我运行一个select,update,insert或delete放在桌子上,它工作正常。当我尝试truncate桌子时,它给了我这个错误信息:
找不到对象“TableName”,因为它不存在或您没有权限。
此帐户缺少什么权限?
假设我有以下长时间运行的查询
UPDATE [Table1]
SET [Col1] = 'some value'
WHERE [Col2] -- some clause which selects thousands of rows
Run Code Online (Sandbox Code Playgroud)
并假设在上述查询运行时执行以下查询
SELECT *
FROM [Table1]
Run Code Online (Sandbox Code Playgroud)
第一个查询是否阻止第二个查询运行,直到第一个查询完成?如果是这样,第一个查询会阻止第二个查询在所有行上运行还是仅在 WHERE 子句中涉及的行上运行?
编辑:
假设第二个查询是
SELECT [Col1], [Col2]
FROM [Table1]
WHERE [Col2] -- some clause whose matching elements overlap those from
-- the clause in the first query and which has additional matching elements
Run Code Online (Sandbox Code Playgroud) 如何编写脚本以查看 SQL Server 中正在运行的作业和作业开始时间?
SELECT sj.name,
sja.run_requested_date,
CONVERT(VARCHAR(12), sja.stop_execution_date-sja.start_execution_date, 114) Duration
FROM msdb.dbo.sysjobactivity sja
INNER JOIN msdb.dbo.sysjobs sj
ON sja.job_id = sj.job_id
WHERE sja.run_requested_date IS NOT NULL
ORDER BY sja.run_requested_date desc;
Run Code Online (Sandbox Code Playgroud) 为什么这样的事情不起作用?
SELECT
CASE
WHEN NULLIF(COL_LENGTH('Customers', 'Somecol'), '') IS NULL THEN NULL
ELSE Somecol
END AS MyTest
FROM Customers;
Run Code Online (Sandbox Code Playgroud)
我只是检查该列是否存在,但是,SQL Server 抱怨Somecol不存在。在单个语句中是否有替代方法?
我正在尝试更改表中的列。现有的表是这样的:
CREATE TABLE [dbo].[table](
[id1] [int] NOT NULL,
[id2] [int] NOT NULL,
[id3] [int] NOT NULL,
[name] [nvarchar](255) NOT NULL,
[id4] [int] NOT NULL,
[xmlData] [xml](CONTENT [dbo].[xml_schema]) NULL,
[booleanData1] [bit] NOT NULL,
[notes] [varchar](4096) NULL,
[id5] [int] NULL,
[booleanData2] [bit] NULL,
[id6] [int] NULL,
CONSTRAINT [PK_table] PRIMARY KEY CLUSTERED
([id1] ASC, [id2] ASC, [id3] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
现在我试图在这个表上执行这个 sql:
ALTER TABLE [table] ALTER COLUMN [xmlData] XML
Run Code Online (Sandbox Code Playgroud)
这样我就可以删除 xml 模式并用新的模式替换它。
但我收到此错误:
无法创建大于允许的最大行大小 8060 的大小为 8074 的行。
谁能告诉我这里有什么问题?
我正在研究从 MS SQL 2012 升级到 2014 的好处。SQL 2014 的一大卖点是内存优化表,这显然使查询速度超快。
我发现内存优化表有一些限制,例如:
(max)大小的字段timestamp字段UNIQUE限制这些都属于麻烦事,但如果我真的想解决这些问题以获得性能优势,我可以制定计划。
真正的问题是您无法运行ALTER TABLE语句,并且每次向索引列表添加字段时都必须经历这些繁琐INCLUDE的过程。此外,您似乎必须将用户拒之门外,才能对实时数据库上的 MO 表进行任何架构更改。
我觉得这简直太离谱了,以至于我实际上无法相信 Microsoft 会在此功能上投入如此多的开发资金,却让其维护起来如此不切实际。这使我得出结论,我一定是拿错了棍子的一端;我一定误解了内存优化表的某些内容,这让我相信维护它们比实际困难得多。
那么,我误解了什么?你用过MO表吗?是否有某种秘密开关或过程使它们易于使用和维护?
index sql-server alter-table sql-server-2014 memory-optimized-tables
该EXCEPT运营商已在SQL Server 2005中引入的,但之间有什么区别NOT IN和EXCEPT?
它也这样做吗?我想用一个例子做一个简单的解释。
sql-server-2005 sql-server sql-server-2008-r2 operator except
我有一个典型的例子,参数嗅探导致一个“坏”的执行计划进入计划缓存,导致我的存储过程的后续执行非常缓慢。我可以用局部变量OPTIMIZE FOR ... UNKNOWN、 和来“解决”这个问题OPTION(RECOMPILE)。但是,我也可以深入查询并尝试优化它。
我正在尝试确定我是否应该:鉴于解决问题的时间有限,我想知道不这样做的成本。在我看来,如果我坚持使用OPTION(RECOMPILE),净效果是每次运行查询时都会重新创建查询计划。所以,我想我需要知道:
如何找出创建查询计划的成本是多少?
为了回答我自己的问题,我在谷歌上搜索过(例如使用这个查询),并且我已经浏览了dm_exec_query_statsDMV列的文档 。我还检查了 SSMS 中的“实际查询计划”的输出窗口以找到此信息。最后,我搜索了 DBA.SE。这些都没有得到答案。
谁能告诉我?是否可以找到或测量创建计划所需的时间?
我正在尝试使用 SQL Server Management Studio 2012 更改 sa 帐户的密码。我已按照以下步骤操作,但密码仍然相同。
任何的想法 ?
我如何转换@dateb:
SET @dateb = dateadd(month, datediff(month, 0, getdate()) - 3, 0)
Run Code Online (Sandbox Code Playgroud)
2014-04-04作为日期返回到整数201404
谢谢
sql-server ×10
alter-table ×1
except ×1
index ×1
locking ×1
operator ×1
permissions ×1
t-sql ×1
truncate ×1