标签: sql-server-2008-r2

您如何确保新索引不会减慢查询速度?

当我们添加或删除新索引以加速某些事情时,我们最终可能会放慢速度.为了防止这种情况,在创建新索引后,我正在执行以下步骤:

  1. 启动Profiler,
  2. 运行一个包含大量查询的SQL脚本,我不想放慢速度
  3. 将跟踪从文件加载到表中,
  4. 在添加(或删除)索引之前,分析来自跟踪的CPU,读取和写入以及先前运行的结果.

这是一种自动化的,可以满足我的需求.但是,我不确定是否有更好的方法.是否有一些工具可以满足我的需求?

编辑1投票结束我的问题的人,你能解释一下你的理由吗?

编辑2我搜索了,但没有找到任何解释如何添加索引可以减慢选择.然而,这是一个众所周知的事实,所以应该有某种东西.如果什么都没有出现,我可以稍后写几个例子.

编辑3一个这样的例子是:两列高度相关,如身高和体重.我们有一个高度索引,对我们的查询来说没有足够的选择性.我们在权重上添加一个索引,并运行一个包含两个条件的查询:高度范围和权重范围.因为优化器不知道相关性,所以它严重低估了查询的基数.

另一个例子是在增加列上添加索引(例如OrderDate)会严重减慢查询的速度,如OrderDate> SomeDateAfterCreatingTheIndex.

sql-server query-optimization sql-server-2008 sql-server-2008-r2

19
推荐指数
2
解决办法
6107
查看次数

SQL Server使用没有主键的聚簇索引创建表

是否可以从SQL Server 2008中不是主键的create table语句创建聚簇索引?

这个目的是针对SQL Azure中的表,因此我不能首先创建表,然后在表上创建聚簇索引.

编辑:显然它是导致我的问题的FluentMigrator,它的版本表没有聚集索引,因此尝试创建版本控制表而不是我的表是错误的.

sql-server clustered-index sql-server-2008 sql-server-2008-r2 azure-sql-database

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

有没有办法在SQL Server 2008中设置生成脚本的默认值?

大多数情况下,当我在SSMS中生成脚本时,我必须在" 生成和发布脚本"向导中更改完全相同数量的设置.有没有办法在此向导中设置默认值(特别是在" 高级脚本选项"对话框中?

如果没有,有没有人有任何有趣的方式来促进这种需求?

sql ssms sql-server-2008 sql-server-2008-r2

19
推荐指数
1
解决办法
4158
查看次数

是否可以从INFORMATION_SCHEMA获取表类型定义?

我知道存储了用户定义的类型information_schema.domains,但是是否可以获得类型类型的定义table type

要清楚我正在寻找实际的表类型定义:

例如,我想获取列定义 myTableType

CREATE TYPE myTableType AS TABLE(
     Id INT,
     SomeValue NVARCHAR(20)
);
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server sql-server-2008-r2

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

获取"尚未指定运行报告所需的一个或多个参数"错误

我正在构建一个报告,我希望接受用户的两个值,将这些值提供给查询,并查找与这些条目关联的数据.

例如,如果您有一份员工,绩效衡量标准和与之相关的值列表; 然后,用户将选择员工姓名/绩效度量,他们将获得该员工对该度量的评分信息.

我有两个参数,每个参数都是从SQL查询填充得到一个不同的员工姓名和度量列表,下面的表只是根据~'WHERE name = @Name AND measure = @Measure'提取信息但是当我点击'预览'在本地运行报告我收到错误:"尚未指定运行报告所需的一个或多个参数"

我知道参数工作正常,因为我可以将它们的值直接输入到文本框中,并且值正确填充.此外,如果我将查询更改为只接受一个参数(即WHERE measure = @Measure),查询将起作用.

我很困惑为什么发生这个错误,因为我知道我的参数正在运行并正确填充.

sql-server-2008-r2 reporting-services

19
推荐指数
4
解决办法
4万
查看次数

CTE和TEMP表之间的主要差异是什么?

使用CTE's(common table expressions)而不是使用是否有好处temp tables.

我在两者之间进行了性能测试,但我发现它们之间没有太大区别.

使用的优点和缺点是CTE'S什么?

sql t-sql temp-tables common-table-expression sql-server-2008-r2

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

SQL Server dbo.sysdiagrams是用户表或系统表

在简单数据库中使用数据库图时,SQL Server在Table\Systam Tables节点中创建一个dbo.sysdiagrams表(在Microsoft management studio\object explorer中).但sysdiagrams表在SQL Server中标记为用户表.您可以通过以下查询获取用户表.

SELECT * 
FROM sys.tables t
WHERE OBJECTPROPERTY(t.object_id,'IsUserTable') = 1
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我不知道sysdiagram表是系统表还是用户表.

存在microsoft_database_tools_support的值1在sysdiagram的扩展属性中,它确定自动创建的表.

在此输入图像描述

sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012

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

在SQL Server中更改数据时自动刷新应用程序

我使用SQL Server,我有3个应用程序服务器.当我的数据库中的表发生更改时,我需要向那些应用程序服务器刷新本地缓存的数据.我使用触发器来进行已知更改并通过服务代理队列发送消息.然后我创建一个存储过程并分配它来激活我的队列的存储过程,在这个存储过程中我收到消息,但我不知道如何在我的应用程序中调用refresh方法.

c# sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012

19
推荐指数
1
解决办法
4481
查看次数

IntelliSense无法在SQL Server Management Studio中运行

我们使用SQL Server Management Studio 2008 R2.IntelliSense完美地与sa帐户配合使用.但它不能与Windows身份验证用户一起使用.用户可以访问具有db_owner角色的主数据库,但它不是sysadmin.

如何解决这个问题?

sql-server ssms sql-server-2008-r2

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

如何使用特定值更新varbinary字段?

基本上我试图给用户一个特定的密码,所以我可以在系统上测试一些功能,因为我只有我们的管理员帐户,我不能玩,我只是选择一个随机帐户,所以我可以做我的测试.所以这是我尝试更新:

UPDATE dbo.Login
SET
  Salt=CAST('bPftidzyAQik' AS VARBINARY),
  Password=CAST('0x2B89C2954E18E15759545A421D243E251784FA009E46F7A163926247FDB945F85F095DBB1FFF5B2B43A6ADAE27B8C46E176902412C4F8943E39528FF94E0DD5B' AS VARBINARY)
WHERE LoginID=10947
Run Code Online (Sandbox Code Playgroud)

它运行正常,但数据库中的代码看起来是日语的一个,而另一个的语法看起来很好,但它不是我输入的值,我希望它使用我输入的确切值,所以我可以登录.如何我这样做吗?我已经尝试了几种不同的演员和转换解决方案而没有运气.

sql varbinary sql-server-2008 sql-server-2008-r2 sql-update

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