我刚刚创建了一个代理,我需要向运行 sql server 代理的帐户授予对代理的访问权限。它可能是一个域帐户。
如何使用 T-SQL 找到它?
当我运行以下脚本时:
begin transaction
select XACT_STATE()
select @@TRANCOUNT
begin transaction
select XACT_STATE()
select @@TRANCOUNT
begin transaction
select XACT_STATE()
select @@TRANCOUNT
rollback
select XACT_STATE()
select @@TRANCOUNT
Run Code Online (Sandbox Code Playgroud)
我得到以下结果:
那么一个单一的回滚语句可以回滚任意数量的事务?
那么写以下内容是没有意义的:
while @@TRANCOUNT > 0
rollback
Run Code Online (Sandbox Code Playgroud) 我有一个脚本来生成创建表脚本。你可以在我对这个问题的回答中看到它。
关于这个问题here,看到答案有关于如何向表添加分区以及如何从表中删除分区的示例,我想看看任何阶段的脚本。
我找到了这个链接:如何找到应用于表的分区函数文本
如何生成用于创建分区函数和分区模式的脚本?
我正在编写一个脚本来生成create partition function
如下所示的 ,但它仅适用于我自己的PF_year分区函数,因为was很难克服sys.partition_range_values具有sql_variant数据类型作为值的事实。
当我使用案例时,出现以下错误:
消息 206,级别 16,状态 2,第 35 行
操作数类型冲突:int 与日期不兼容
然后在他的精彩回答Dan Guzman 中,向我们展示了SQL_VARIANT_PROPERTY一些我不知道的奇妙事物,现在我是一名新的 DBA 和新人。
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT
RADHE = 'CREATE PARTITION FUNCTION' + space(1) + quotename(spf.name) +
'(' +
COALESCE(baset.name,'data type not found') + ')' + CHAR(13) +
'AS RANGE ' + CASE WHEN CAST(spf.boundary_value_on_right AS …Run Code Online (Sandbox Code Playgroud) database-design sql-server optimization partitioning sql-server-2014
我有一家第三方公司过来建立 ssas 数据库来生成报告。
他们做到了,但现在 DBA 想要查看,但我没有权限,甚至无法查看这些数据库,如下图所示。
我可以授予自己管理员权限吗?
我是系统管理员。有一个名为SQLDBA和的 AD 组
当右键单击 server-properties-security-Add- 然后添加我的 AD 组时,SQLDBA它说我没有alter服务器对象的权限,如下图所示。
我之前已将该sqldbaAD 组作为管理员添加到该框中。
“mycompany\MMiorelli”用户无权更改“myserver\instance”对象,或者该对象不存在。(Microsoft.AnalysisServices.AppLocal.Core)
纽扣:
好的
我一直在尝试使用我的其中之一登录,sql server logins但收到以下错误消息:
Run Code Online (Sandbox Code Playgroud)TITLE: Connect to Server ------------------------------ Cannot connect to MY_SERVER. ------------------------------ ADDITIONAL INFORMATION: Logon failed for login 'cola' due to trigger execution. Changed database context to 'master'. Changed language setting to us_english. (Microsoft SQL Server, Error: 17892) For help, click: http://go.microsoft.com/fwlink?> ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=17892&LinkId=20476 ------------------------------ BUTTONS: OK ------------------------------
我知道下面的问题,但它略有不同,我已经尝试了那里所说的所有内容,但对我没有用,这就是我在这里提出这个问题的原因:
“由于触发器执行,登录 'sa' 登录失败。” 未定义 SA 登录触发器时
这里的这个问题也非常相似:
用户登录失败 - 错误:18456,严重性:14,状态:38
从这个我得到了以下信息:
用户登录失败 - 错误 18456 - 严重性 14,状态 38
1 'Account is locked out'
2 'User …Run Code Online (Sandbox Code Playgroud) 我正在使用一些用户定义的表类型。它们非常有用。
您可以通过运行这个简单的脚本来查看有关它们的信息:
SELECT o.* from sys.table_types o
Run Code Online (Sandbox Code Playgroud)
我有一个过程可以显示用户对象的所有权限。我也可以指定对象的名称。代码是这样的:
DECLARE @OBJ SYSNAME
SELECT @OBJ ='%' -- shows all objects
;WITH
RADHARANI AS (
SELECT
dp.NAME AS principal_name
,dp.type_desc AS principal_type_desc
,o.NAME AS object_name
,o.type_desc
,p.permission_name
,p.state_desc AS permission_state_desc
FROM sys.all_objects o
INNER JOIN sys.database_permissions p ON o.OBJECT_ID=p.major_id
LEFT OUTER JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id
WHERE O.OBJECT_ID > 0
AND O.TYPE <> 'S' -- no system
AND O.parent_object_id = 0 -- no constraints
AND o.NAME like @OBJ
)
SELECT * …Run Code Online (Sandbox Code Playgroud) sql-server permissions sql-server-2008-r2 sql-server-2012 user-defined-type
在我的分销商数据库中寻找缺失的索引,我意外地发现了太多。
需要索引的表一般是3个:
MSrepl_commands
MSlogreader_history
MSdistribution_history
这是缺失索引的图片
现在专注于 TABLE MSdistribution_history
这一切似乎归结为这 3 个索引:
USE distribution_BOCSS;
CREATE NONCLUSTERED INDEX
IDX_agent_id_time_xact_seqnorunstatus_INC_delivery_latency
ON [distribution_BOCSS].[dbo].[MSdistribution_history]
([agent_id], [time], [xact_seqno], [runstatus])
INCLUDE (delivery_latency,start_time,timestamp) WITH (ONLINE = ON)
USE distribution_BOCSS;
CREATE NONCLUSTERED INDEX IDX_runstatus_INC_agent_id_delivery_latency
ON [distribution_BOCSS].[dbo].[MSdistribution_history]
([runstatus])
INCLUDE (agent_id,delivery_latency,time,xact_seqno,timestamp)
WITH (ONLINE = ON)
USE distribution_BOCSS;
CREATE NONCLUSTERED INDEX IDX_agent_idrunstatus_INC_time_xact_seqno_delivery_latency
ON [distribution_BOCSS].[dbo].[MSdistribution_history]
([agent_id], [runstatus])
INCLUDE (time,xact_seqno,delivery_latency,timestamp,start_time)
WITH (ONLINE = ON)
Run Code Online (Sandbox Code Playgroud)
但是,正如我想象的那样,当前现有聚集索引的更新量非常高(不确定从什么时候开始添加到这些统计信息中,可能是自上次重新启动以来),如下图所示:
写的太高了,它是一个生产系统,我想在这方面得到更多的支持。创建这些索引我真的会受益吗?
是否有任何文档支持在事务复制的分发服务器数据库上创建索引?
为什么微软没有为这些数据库提供适当的索引?
我正在寻找一个迹象(如果有的话),要么忽略内存瓶颈选项,要么接受它,或者让我进一步调查。
例如:
页面寿命:
SELECT [object_name],
[counter_name],
[cntr_value]
FROM sys.dm_os_performance_counters
WHERE [object_name] LIKE '%Manager%'
AND [counter_name] = 'Page life expectancy'
Run Code Online (Sandbox Code Playgroud)
在这种情况下,在我当前的环境中,我有一台具有 8 GB RAM 的服务器,我会要求管理层提供更多内存。我相信这是一个内存瓶颈。
什么是使用 RAM 将是另一项调查。
下面的这封电子邮件是否有效识别可能的内存瓶颈?
我们需要查看 SQLServer:Buffer Cache Hit ratio
如果该比率小于 95%,则表示服务器处于内存压力之下
希望这可以帮助,
performance sql-server memory sql-server-2008-r2 sql-server-2014
我正在处理一个查询,将所有直接或间接依赖于任何级别的数据库对象提供给一个名为 的表dbo.tblborder,该表严重依赖。
但是,这个问题特别与此查询的查询计划有关,因为我在查询计划中看到警告(在不同的排序运算符中)两种类型的警告,一种与溢出到 tempDB 相关,另一种与转换相关的警告数据类型和基数估计。
查询和查询计划进一步向下,在图片之后。
在处理系统对象时,如何找出需要更新统计信息的对象?
否则,如何摆脱查询计划上的这个警告?
关于数据类型转换,我可以做些什么来避免这种情况以及基数估计问题?
也许是一些跟踪标志?
它是一个 600GB 的数据库,我想找到特定表上的所有依赖项,仅第一级就显示了 325 个对象,但这不是我每天都会运行的查询。我对清除这些警告很感兴趣,但这不是生死攸关的问题。
第 1 张关于 tempdb 溢出警告的图片:
关于 tempdb 溢出警告的第二张图片:
第三个警告 - 与数据类型转换相关,可能会影响基数估计:
;WITH Radhe AS (
SELECT DISTINCT
s2.object_id,
Name=SCHEMA_NAME(S2.schema_id) + '.' + S2.Name,
ObjectType = S2.Type,
DependsOn = s1.object_id,
DependsOn_Name=SCHEMA_NAME(S1.schema_id) + '.' + S1.Name,
0 as Level
FROM sys.sysdepends DP
INNER JOIN sys.objects S1
ON S1.object_id = DP.DepID
INNER JOIN sys.objects S2
ON S2.object_id = DP.ID
WHERE S1.object_id = …Run Code Online (Sandbox Code Playgroud) sql-server statistics system-tables sql-server-2014 cardinality-estimates
我有一个无法杀死的顽固 spid,它阻止了我的 tempdb的事务日志被截断
这就是我发现这个流氓 spid 的方法:
if object_id('tempdb..#OpenTranStatus','U') is not null
drop table #OpenTranStatus
CREATE TABLE #OpenTranStatus (
ActiveTransaction varchar(25),
Details sql_variant
);
-- Execute the command, putting the results in the table.
INSERT INTO #OpenTranStatus
EXEC ('DBCC OPENTRAN (sqlwatch) with tableresults')
SELECT * FROM #OpenTranStatus
Run Code Online (Sandbox Code Playgroud)
这是它正在运行(或保留)的查询:
select d.database_id , sd.sqlwatch_database_id, sd.sql_instance
into #d
from dbo.vw_sqlwatch_sys_databases d
inner join [dbo].[sqlwatch_meta_database] sd
on sd.[database_name] = d.[name] collate database_default
and sd.[database_create_date] = case when d.name = 'tempdb' …Run Code Online (Sandbox Code Playgroud) sql-server ×10
permissions ×2
transaction ×2
connections ×1
dbcc ×1
dmv ×1
kill ×1
logins ×1
memory ×1
optimization ×1
partitioning ×1
performance ×1
replication ×1
security ×1
ssas ×1
ssas-2016 ×1
statistics ×1
tempdb ×1