小编Lum*_*mpy的帖子

需要了解并行查询执行错误

今天,我们的生产 sql 服务器的性能下降了。在发生这种情况时,我们记录了几个"The query processor could not start the necessary thread resources for parallel query execution"错误。我所做的阅读表明,这与执行复杂查询时要使用的 CPU 数量有关。但是,当我在停电期间检查我们的CPU Utilization was only at 7%. 还有什么其他的东西可以指代我还没有遇到过吗?这是性能下降的可能罪魁祸首还是我在追逐红鲱鱼?

我的 sp_configure 值如下:

name                                minimum maximum config_value run_value
cost threshold for parallelism      0       32767   5            5
Run Code Online (Sandbox Code Playgroud)

sql-server parallelism sql-server-2008-r2

24
推荐指数
2
解决办法
3万
查看次数

sp_execute 需要“int”类型的参数“@handle”

如果目标数据库中存在表,我正在尝试签入存储过程。如果没有,我将使用源数据库中的 information_schema 表创建表。但是,当我使用 sp_execute 尝试恢复表是否存在时,我收到错误过程需要“int”类型的参数“@handle”。

我没有使用@handle 参数。有人能告诉我这个错误是什么意思以及为什么我会收到它吗?我的代码的相关部分如下。

DECLARE @SQL NVARCHAR(MAX),
        @Parameters NVARCHAR(4000),
        @TableNotExists INT,
        @SourceTable NVARCHAR(200),
        @DestDB NVARCHAR(200)

BEGIN

SET @SourceTable = 'table'
SET @DestDB = 'database'
SET @Parameters = N'@SourceTableIN NVARCHAR(200), @TableNotExistsOut INT OUTPUT'
SET @SQL = N'USE [' + @DestDB + '] IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = ''BASE TABLE'' AND TABLE_NAME = @SourceTableIN)
BEGIN SET @TableNotExistOUT = 1 END'

EXEC sp_Execute @SQL, @Parameters, @SourceTableIN = @SourceTable, @TableNotExistsOUt = @TableNotExists OUTPUT

END
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server dynamic-sql t-sql

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

确定用户可以删除数据库的原因

我有一个能够删除任何数据库的 sql server 用户。我一直在运行下面的代码来检查用户在 SQL Server 中拥有的权限,但无法确定用户如何能够删除数据库。是否有 sql 脚本可以帮助我确定此用户如何删除 dbs?是否有命令拒绝他们删除任何数据库?(SSMS 未将用户显示为 dbcreator 角色的一部分)

select USER_NAME(p.grantee_principal_id) AS principal_name,
    dp.type_desc AS principal_type_desc,
    p.class_desc,
    OBJECT_NAME(p.major_id) AS object_name,
    p.permission_name,
    p.state_desc AS permission_state_desc 
from    sys.database_permissions p
inner   JOIN sys.database_principals dp
on     p.grantee_principal_id = dp.principal_id
order by principal_name
Run Code Online (Sandbox Code Playgroud)

如果有帮助,上面查询的输出为用户提供了以下三个记录

class_desc object_name permission_name permission_state_desc OBJECT_OR_COLUMN xp_cmdshell EXECUTE GRANT DATABASE NULL CONNECT GRANT
DATABASE NULL CREATE DATABASE GRANT

sql-server-2008 permissions

9
推荐指数
2
解决办法
1054
查看次数

识别阻塞并发送警报

我需要创建一个警报,当任何查询被阻止超过 60 秒时会通知我。例如,如果有人在表上打开了一个事务并且忘记运行提交或回滚。这可以从系统表中获取吗?

sql-server-2008-r2

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

访问链接服务器错误“提供程序未提供有关该错误的任何信息。”

一点信息。

我正在运行 SQL SERVER 2008 R2 64 位。我安装了 Microsoft.ACE.OLEDB.12.0 提供程序。

在我的生产服务器上,我使用上面列出的提供程序为访问数据库设置了一个链接服务器,一切正常。

将 Access db 复制到我们的开发环境并尝试使用相同的提供程序设置链接服务器。测试连接成功返回从链接服务器中选择返回

消息 7399,级别 16,状态 1,第 1 行链接服务器“MYdb”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”报告错误。提供者没有提供有关错误的任何信息。消息 7330,级别 16,状态 2,第 1 行无法从链接服务器“MYdb”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”中获取一行。

两台服务器都运行相同版本的 SQL Server。两者都是 Windows NT 6.1 64 位操作系统。

当我将 AllowInProcess 设置为 1 时,测试连接失败。

任何帮助将不胜感激,因为谷歌让我失望。

谢谢,

克里斯

sql-server-2008 sql-server linked-server

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

使用动态 SQL 在不同的数据库中创建视图

作为一个更大项目的一部分,我试图在 SQL Server 实例中的每个数据库上创建一个新视图。

我创建了一个存储过程,其中包括通过游标循环遍历实例中的数据库,然后尝试使用sp_executesql. 不幸的是,我试图在其上创建视图的数据库中不存在存储过程。所以我试图让 sql server 使用该数据库,然后运行创建视图脚本。当我运行它时,我收到错误

'CREATE VIEW' 必须是查询批处理中的第一个语句。

关于我如何做到这一点的任何想法?这是sp_executesql程序的一部分。

declare @DB VARCHAR(50)
declare @SQL NVARCHAR(max)
set @DB = '[dbname]'

SET @SQL =  N'USE ' + @DB + N' CREATE VIEW vNonhiddenCategories 
AS
SELECT categories.categoryid
FROM categories
--WHERE ... irrelevant remainder of view code ...
'
execute sp_executesql @SQL
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server dynamic-sql t-sql

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

SSAS Dimensions Hierarchy 导致部署错误

我已经使用服务的凭据设置了到 Adventure Works DW 数据库的数据源连接。

我正在使用该DimDate表创建一个维度。为了简化事情,我只使用Calendar Quarter, Calendar Year, Day Number of Month, English Month Name, 和Date Key列。

这些属性中的每一个都已设置为 AttributeHierarchyVisible = False

我将其Calendar Year拖入Hierarchies后跟Calendar Quarter, English Month Name,Day Number of Month

我将属性关系设置为:

日期键 -> 月份的天数 -> 英文月份名称 -> 日历季度 -> 日历年

所有关系都设置为 rigid

当我尝试部署此设置时,出现以下错误:

错误 2 内部错误:操作未成功终止。0 0
错误 3 服务器:当前操作被取消,因为事务中的另一个操作失败。0 0

我也收到此警告:

警告 1 OLAP 存储引擎中的错误:处理时发现重复的属性键:表:'dbo_DimDate',列:'CalendarQuarter',值:'2'。该属性是“日历季度”。0 0

我无法弄清楚发生了什么,或者为什么会出错。我正在使用的这本书给了我上面列出的步骤,到目前为止,谷歌让我失望了(一件非常可怕的事情)。

你们可以提供任何帮助来帮助我弄清楚我做错了什么,将不胜感激。

ssas

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

SSMS登录到不同的域

我们的生产数据库由另一家公司在他们的域中托管。我能够将 RDP 放入框中并使用他们提供给我的凭据登录,但是当我尝试使用 SSMS 从本地计算机上的本地计算机登录时,SSMS 会强制使用我的本地凭据。我已经尝试过,但找不到使用 SSMS 前端更改这些凭据的方法。

我尝试使用目标为的快捷方式

C:\...\runas.exe /netonly /user:DOMAIN\USERNAME "C:\...\ssms.exe"
Run Code Online (Sandbox Code Playgroud)

但是当 SSMS 出现时,它似乎仍在尝试使用我的本地凭据并且不允许我连接。有什么我想念的吗。我如何告诉 SSMS 它连接到不同的域帐户?

ssms sql-server-2008-r2

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

逗号分隔的列修复

在我目前的工作地点,有人决定将 ID 放入逗号分隔的列中。我希望将这些分解为适当的多对多关系。然而; 引用此数据的应用程序不会立即更改。所以我需要修改一个视图以仍然显示逗号分隔的列。设置视图以显示逗号分隔列的最佳方法是什么?有没有一种不涉及离开原始列的方法?

表定义的精简版本如下。

ID
ProductName
FeatureIDs

ID     ProductName    FeatureIDS
1      Hot dog        1,5,4
2      Hamburger      1,3
3      Fish           2

ID
FeatureName

ID     FeatureName
1      Mayo
2      TarTar Sauce
3      Pickle
4      Relish
5      Onion
Run Code Online (Sandbox Code Playgroud)

最终我想将这些组合成一个单一的产品表和多对多的关系

ID 产品名称 产品类型

其中产品类型将是“产品”或“功能”

ID productid featureid

对于映射表。

是的,设置的视图需要是可更新的视图。

sql-server-2008-r2

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

日志文件增长问题

我们每晚都将来自一堆数据库的数据整合到四个报告数据库中。

因为每晚都会导入整个数据集,所以我们不需要能够将数据恢复到某个时间点。因此数据库处于简单恢复模式。

然而,每次我们运行导入时,我们的数据库ldf文件都会变得非常大(50+ Gig)。

有没有办法完全关闭日志记录或让 SQL Server 更快地清除这些日志文件?

我猜没有进行结算的log_reuse_wait_descACTIVE_TRANSACTION

sql-server-2008 transaction-log

4
推荐指数
1
解决办法
136
查看次数