小编Mar*_*lli的帖子

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

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

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

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
查看次数

如何在 SQL Server 2014 上安装 SSIS?

我正在 Windows Server 2012 R2 机器上安装 SQL Server 2014,包括 SSIS。

从这个链接: https: //msdn.microsoft.com/en-us/library/ms137861( v= sql.120).aspx ssis 使用端口 135,它应该在防火墙上打开。

我创建一个域帐户来运行 SSIS 在此处输入图片说明

安装 SQL - 功能可以在下图中看到 在此处输入图片说明

所有服务都运行良好查看一个特殊的广告帐户来运行 ssis 服务 在此处输入图片说明

授予作为服务登录并在内存中锁定页面 在此处输入图片说明

在控制面板-> 管理工具-> 计算机管理 在此处输入图片说明

将用户和 ssis 帐户添加到“分布式 com 用户” 在此处输入图片说明

On control panel -> Administrative Tools > Component Services

Then go to computer-> my computer -> DCOM Config -> and look for Microsoft
SQL Server Integration Services 12.0

As you can see on the picture below
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

右键单击 Microsoft SQL Server Integration Services 12.0

在此处输入图片说明

我已将身份验证级别保留为“呼叫”。 …

sql-server installation sql-server-2012 connectivity ssis-2014

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

分销商数据库中缺少索引

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

需要索引的表一般是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
查看次数

如何以有效的方式在 sql server 表中插入/更新数百万行?

通常在我的工作中,我必须在 SQL Server 中创建一个过程,该过程将处理数百万数据行,将它们保存到临时表(临时表)中,最后将它们保存到数据库中的一个或多个表中。

我不是在寻找替代解决方案,例如 SSIS。

我无法禁用索引、约束、使数据库脱机、更改恢复模式等。

我们一直在寻找将这个过程设置为在系统不那么繁忙时运行的方法,但我们在 24/7/365 在线零售商环境中工作。

有一个非常相似的问题: Performance Inserting and Updating Millions of rows into a table

这个问题也很重要: 插入大量行的最快方法是什么?

例子一:

CREATE PROCEDURE [dbo].[udpstaging_page_import_fromFilter]
      @sourceDesc nvarchar(50) -- e.g. 'Coremetrics'
      ,@feedDesc nvarchar(50) -- e.g. 'Daily Exports'
      ,@process_job_task_logID bigint
AS BEGIN


      SET NOCOUNT ON;
      BEGIN TRY


            --truncate table prior INSERT
            exec dbo.udpstaging_page_truncateTable;

            declare @source_feedID int;
            exec crm_admin.dbo.udpsource_feedID_select @sourceDesc
                  ,@feedDesc
                  ,@source_feedID = @source_feedID OUTPUT;


            -- drop temp tables
            if exists (select * from tempdb.dbo.sysobjects o where o.xtype in ('U') and …
Run Code Online (Sandbox Code Playgroud)

performance sql-server insert update sql-server-2014 query-performance

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

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万
查看次数

仅从完整备份将数据库恢复到时间点

我有一个恢复模式设置为 FULL 的数据库。这是一个开发数据库,​​我有两个完整备份,日期分别为 19 日和 27 日,即最新的。

其中一位开发人员在 26 日做了一些更改,我想回滚这些更改并希望将数据库恢复到 25 日的状态。

restore database MyDb from disk = 'I:\MSSQL\DATA\MyDb_20160127.bak'
with recovery, stopat = '2016-01-25 10:38:15.280',
move 'MyDb' to  'I:\MSSQL\DATA\MyDb.mdf',
move 'MyDb_log' to 'I:\MSSQL\DATA\MyDb.ldf'
Run Code Online (Sandbox Code Playgroud)

STOPAT 子句指定一个点太早,无法恢复此备份集。选择不同的停止点或使用 RESTORE DATABASE WITH RECOVERY 在当前点恢复。

我正在使用 SQL Server 2005

sql-server-2005 sql-server recovery restore recovery-model

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

验证统计的重要性?具有自动创建统计信息的数据库有效吗?

在 SQL Server 2005 上工作时,我想使用数据库引擎优化顾问来帮助我优化我的网络服务器。

我做的第一件事是创建一个服务器端配置文件跟踪并运行它大约一个小时。

这是生成的跟踪文件。

当我在 DTA 上使用这个文件时,我得到以下建议:

在此处输入图片说明

建议翻译成下面的脚本,评论在那里,因为我仔细检查了索引建议。

CREATE STATISTICS [_dta_stat_2108846875_3_6] ON [dbo].[ProductBulletPoint]([LanguageId], [NoteTypeCode])


CREATE NONCLUSTERED INDEX [_dta_index_ProductBulletPoint_39_2108846875__K6_K1_K3_2_4_5_7] ON [dbo].[ProductBulletPoint] 
(
    [NoteTypeCode] ASC,
    [Tier1] ASC,
    [LanguageId] ASC
)
INCLUDE ( [SeasonItemId],
[SortOrder],
[NoteText],
[NoteGroup]) WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]


--SP_HELPINDEX9 'ProductBulletPoint'
-- the index [_dta_index_ProductBulletPoint_39_2108846875__K6_K1_K3_2_4_5_7]  is ok to implement

CREATE NONCLUSTERED INDEX [_dta_index_ProductShipTax_39_745366020__K7_K5_K2_K3_K1_K4_6] ON [dbo].[ProductShipTax] 
(
    [TaxRegionId] ASC,
    [ItemNo] ASC,
    [DateFrom] ASC,
    [DateTo] …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server statistics

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

更新 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
查看次数

将数据库邮件配置保存到临时表中

我目前正在处理一堆服务器,它们有不同的数据库邮件配置。

我可以看到每个服务器的数据库邮件配置

我使用以下脚本:

--==========================================================
-- getting the Database Mail Configuration
-- Marcelo Miorelli
-- 1-April-2014
--==========================================================

select @@servername
--SQLSALON1\STOCKALLOCATION



-- http://dba.stackexchange.com/questions/47058/how-can-i-see-the-current-database-mail-configuration

EXEC msdb.dbo.sysmail_help_configure_sp;
EXEC msdb.dbo.sysmail_help_account_sp;
EXEC msdb.dbo.sysmail_help_profile_sp;
EXEC msdb.dbo.sysmail_help_profileaccount_sp;
EXEC msdb.dbo.sysmail_help_principalprofile_sp;

EXEC msdb.dbo.sysmail_help_account_sp
Run Code Online (Sandbox Code Playgroud)

实际上,msdb.dbo.sysmail_help_account_sp在这方面,程序是我最喜欢的。

现在我想通过电子邮件发送前一天的备份历史记录(仅完整备份和差异备份),我需要找出每个服务器的配置文件名称。

我想通过将上述过程的内容保存到临时表或表变量中来完成此操作,并在我拥有所需的所有数据并且即将通过电子邮件发送给他们时从中查询信息。

对于那些程序,特别是 sysmail_help_account_sp,我该如何做到这一点?

我特别需要找出profile name. 我已经用于DBA下面的脚本。

这是我用来生成电子邮件内容的脚本:

--=====================================================================================================================
-- sql server backups report in HTML format to be emailed   
--http://dba.stackexchange.com/questions/81432/how-do-i-use-powershell-to-get-a-sql-server-backup-status

--marcelo miorelli
--19-nov-2014
--=====================================================================================================================

   DECLARE @Body VARCHAR(MAX),
        @TableHead VARCHAR(MAX),
        @TableTail VARCHAR(MAX)
    SET NoCount ON ; …
Run Code Online (Sandbox Code Playgroud)

sql-server backup dynamic-sql database-mail sql-server-2016

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

如何连接到微软azure?

我们一直在保存其中一台生产服务器的备份(实际上是一个 Always On 可用性组

这就是我备份和保存到 azure 的方式

    sqlcmd -E -S $(ESCAPE_SQUOTE(SRVR)) -d master 
-Q "EXECUTE dbo.DatabaseBackup 
@AvailabilityGroups = 'SQLAG',
@URL = 'https://MYCOMPANYbackups.blob.core.windows.net/SQLMAINSERVER-datafiles-full',
@Credential = 'SQLAzureCredential',
@BackupType = 'FULL',
@Compress = 'Y',
@Verify = 'Y',
@LogToTable = 'Y'" -b
Run Code Online (Sandbox Code Playgroud)

这是我在尝试连接到 Azure 时看到的:我的存储帐户是什么? 在此处输入图片说明

我有一份工作,我计划向我发送一封关于服务器上所有备份的电子邮件。收集有关备份的信息并发送电子邮件脚本在这里

电子邮件告诉我备份在哪里。例如:

这是一张用于说明目的的图片: 在此处输入图片说明

我如何才能访问备份文件?

这些azure 权限在哪里管理

编辑:

大卫布朗的回答让我明白了,谢谢大卫。

我只是在这里添加了一组将我带到备份的步骤(在成功连接到 azure 之后)。

01 - 点击 Blob

在此处输入图片说明

02 - 选择其中一个容器

在此处输入图片说明

03 - 文件将在那里 - 准备下载

在此处输入图片说明

这篇文章也很有趣:

第一眼:在资源管理器部署中备份文件和文件夹

sql-server backup availability-groups sql-server-2016 azure-blob-storage

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