小编Mar*_*lli的帖子

如何找出运行sql server的帐户?

我刚刚创建了一个代理,我需要向运行 sql server 代理的帐户授予对代理的访问权限。它可能是一个域帐户。

如何使用 T-SQL 找到它?

sql-server dmv sql-server-2014

6
推荐指数
1
解决办法
6110
查看次数

一次回滚会影响所有事务吗?

当我运行以下脚本时:

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)

sql-server transaction sql-server-2014

6
推荐指数
1
解决办法
4017
查看次数

如何生成分区函数和分区模式的创建脚本?

我有一个脚本来生成创建表脚本。你可以在我对这个问题的回答中看到它

但是,现在我需要编写我的分区函数分区方案

关于这个问题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

6
推荐指数
2
解决办法
9949
查看次数

SSAS 数据库的管理员权限

我有一家第三方公司过来建立 ssas 数据库来生成报告。

他们做到了,但现在 DBA 想要查看,但我没有权限,甚至无法查看这些数据库,如下图所示。

我可以授予自己管理员权限吗?

我是系统管理员。有一个名为SQLDBA和的 AD 组

在此处输入图片说明

当右键单击 server-properties-security-Add- 然后添加我的 AD 组时,SQLDBA它说我没有alter服务器对象的权限,如下图所示。

我之前已将该sqldbaAD 组作为管理员添加到该框中。

在此处输入图片说明

标题:Microsoft SQL Server 管理工作室

“mycompany\MMiorelli”用户无权更改“myserver\instance”对象,或者该对象不存在。(Microsoft.AnalysisServices.AppLocal.Core)


纽扣:

好的

sql-server ssas permissions ssas-2016

6
推荐指数
1
解决办法
5410
查看次数

由于触发器执行,登录失败

我一直在尝试使用我的其中之一登录,sql server logins但收到以下错误消息:

一般错误信息

在此处输入图片说明

复制消息文本

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
------------------------------
Run Code Online (Sandbox Code Playgroud)

高级信息

在此处输入图片说明

我知道下面的问题,但它略有不同,我已经尝试了那里所说的所有内容,但对我没有用,这就是我在这里提出这个问题的原因:

“由于触发器执行,登录 'sa' 登录失败。” 未定义 SA 登录触发器时

这里的这个问题也非常相似:

用户登录失败 - 错误:18456,严重性:14,状态:38

从这个我得到了以下信息:

用户登录失败 - 错误 18456 - 严重性 14,状态 38

1      'Account is locked out'
2      'User …
Run Code Online (Sandbox Code Playgroud)

security sql-server logins connections sql-server-2016

6
推荐指数
1
解决办法
2万
查看次数

如何列出用户定义表类型的权限?

我正在使用一些用户定义的表类型。它们非常有用。

您可以通过运行这个简单的脚本来查看有关它们的信息:

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

5
推荐指数
1
解决办法
7462
查看次数

分销商数据库中缺少索引

在我的分销商数据库中寻找缺失的索引,我意外地发现了太多。

需要索引的表一般是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)

但是,正如我想象的那样,当前现有聚集索引的更新量非常高(不确定从什么时候开始添加到这些统计信息中,可能是自上次重新启动以来),如下图所示:

在此处输入图片说明

写的太高了,它是一个生产系统,我想在这方面得到更多的支持。创建这些索引我真的会受益吗?

是否有任何文档支持在事务复制的分发服务器数据库上创建索引?

为什么微软没有为这些数据库提供适当的索引?

replication sql-server transactional-replication

5
推荐指数
1
解决办法
1536
查看次数

SQLServer:Buffer Cache Hit ratio 是 POSSIBLE 内存瓶颈的一个很好的指标?

我正在寻找一个迹象(如果有的话),要么忽略内存瓶颈选项,要么接受它,或者让我进一步调查。

例如:

页面寿命:

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

5
推荐指数
1
解决办法
2万
查看次数

更新 sys.objects 的统计信息

我正在处理一个查询,将所有直接或间接依赖于任何级别的数据库对象提供给一个名为 的表dbo.tblborder,该表严重依赖。

但是,这个问题特别与此查询的查询计划有关,因为我在查询计划中看到警告(在不同的排序运算符中)两种类型的警告,一种与溢出到 tempDB 相关,另一种与转换相关的警告数据类型和基数估计。

查询和查询计划进一步向下,在图片之后。

问题

在处理系统对象时,如何找出需要更新统计信息的对象?

否则,如何摆脱查询计划上的这个警告?

关于数据类型转换,我可以做些什么来避免这种情况以及基数估计问题?

也许是一些跟踪标志?

它是一个 600GB 的数据库,我想找到特定表上的所有依赖项,仅第一级就显示了 325 个对象,但这不是我每天都会运行的查询。我对清除这些警告很感兴趣,但这不是生死攸关的问题。

信息

第 1 张关于 tempdb 溢出警告的图片:

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

5
推荐指数
1
解决办法
1618
查看次数

如何杀死已经被杀死的流氓蜘蛛?

我有一个无法杀死的顽固 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 dbcc transaction tempdb kill

5
推荐指数
1
解决办法
1009
查看次数