标签: sql-server-2012

带有报告服务的 SQL Server 2012 Express

在我搜索 SQL Server 2012 Express with Advanced Services 的任何地方,我都得到了这个链接,http://www.microsoft.com/en-us/download/details.aspx?id=35579,每次我安装它时,我看不到在哪里可以添加报告服务作为功能。

是否有另一个包含 Reporting Services 的安装文件,或者我现在确实拥有它但无法判断它已安装?我去了控制面板 -> 管理工具 -> 服务已经没有看到它列出来,这告诉我它没有安装?

更新:我已按照 Kin 的指示进行操作,但无法进一步推进。这就是我现在所在的地方。在 Reporting Services 配置管理器中,“连接”按钮呈灰色,当我单击“查找”时,我收到“无法连接到 Reporting Services...”的错误消息,请参见下文。
在此处输入图片说明

当我转到 SQL Server 配置管理器时,我没有看到 Reporting Services 作为列出开始停止的服务。见下文。 在此处输入图片说明

因此,在我看来,也许我没有安装 Reporting Services,所以我尝试安装这些功能,但没有将 Reporting Services 列为要添加的可用功能。见下文。我知道我下载了 .exe 文件,其中包含可供下载的所有内容,包括 Reporting Services。我的下一步应该是什么来进一步排除故障?我很想卸载并重新安装,但我不确定我是否可以正确卸载。似乎有很多与 SQL Server 2012 相关的文件,我不确定这会如何影响我目前安装的 Visual Studio。顺便说一句,我正在使用 Windows 7 进行本地桌面安装。 在此处输入图片说明

installation sql-server-2012

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

哪些表受变更数据捕获影响

我们正在考虑在 SQL 2012 中使用变更数据捕获。我们试图找出是否有一种简单的方法来找出给定 lsn 更改了哪些表。是否有内置函数,或者我们是否需要查询每个 cdc 表以查看 lsn 是否在其中?

更新更多地解释我们正在尝试做的事情:

我们正在尝试构建一个过程来查看数据库中所有表的 cdc 数据(想想 100 个)。此进程将按计划运行,并且会知道它处理的最后一个 lsn。当它运行时,我们想对自上次记录的 lsn 以来发生变化的每个 cdc 表做一些事情。

我们可以检查fn_cdc_get_all_changes_dbo_tablename(@lastlsn, @currentlsn, 'all'),但问题是我们必须运行它 100 次(每个表一次)。有我们可以检查的中心位置吗?

sql-server-2012 change-data-capture

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

在运行 FAST 搜索爬网时支持 SharePoint 数据库的 SQL Server 中的高 CPU

我有一个 SQL Server 2012 (SP1) #cu5 (X64) 实例用作 SharePoint 2010 后端,大多数情况下仅使用 10 - 30% 的 CPU,但在运行 FAST 搜索爬网(增量和完整)时 CPU 使用率很高)。

按照 Microsoft 对 SharePoint SQL 实例的建议,自动创建和自动更新统计已关闭,SharePoint 应该使用健康分析器规则和计时器作业来处理统计和索引维护。在大多数情况下,它做得不错,但在调查创建高 CPU 使用率的查询时,我发现缺少统计信息,但我无法创建它们,因为修改 SharePoint 数据库会使它们不受支持。

如果您遇到过类似的情况,请告诉我,任何有用的建议都会被采纳。如果您认为https://sharepoint.stackexchange.com/是发布此内容而不是 DBA SE 的最佳位置,也请告诉我。

SQL Server 环境: HP ProLiant DL385p Gen8、Microsoft Windows Server 2008 R2 Enterprise SP1、AMD Opteron(tm) 处理器 6204(单插槽、2 核、支持 HT)Microsoft SQL Server 2012 (SP1) #cu5 (X64)

SharePoint 环境(我现在没有太多详细信息):SP 2010 SP2(2 个应用服务器、2 个 Web 服务器、1 个 FAST 搜索服务器)

sql-server sharepoint sql-server-2012

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

Sql Server 修复用户

我使用以下命令在我的数据库中创建一个用户:

CREATE USER Test WITHOUT LOGIN
Run Code Online (Sandbox Code Playgroud)

我用测试名称创建了一个登录名。

我想将测试用户与测试登录联系起来。

当我使用以下命令时:

EXEC sp_change_users_login 'Update_One', 'Test', 'Test'
Run Code Online (Sandbox Code Playgroud)

SQL Server 引发了以下错误:

Msg 15291, Level 16, State 1, Procedure sp_change_users_login, Line 114
Terminating this procedure. The User name 'Test' is absent or invalid.
Run Code Online (Sandbox Code Playgroud)

当我使用以下命令时:

ALTER USER Test WITH LOGIN = Test
Run Code Online (Sandbox Code Playgroud)

SQL Server 引发波纹管错误:

Msg 33016, Level 16, State 1, Line 2
The user cannot be remapped to a login. Remapping can only be done for users that were mapped to Windows or SQL logins. …
Run Code Online (Sandbox Code Playgroud)

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

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

需要在 SQL 索引视图聚集索引中包含 FK?

我正在使用 SQL Server 索引视图来提高连接的性能,该连接按小表上的类别过滤(非常)大的表。例如:

CREATE VIEW BigTableSubset WITH SCHEMABINDING 
AS 
SELECT b.ID, b.SomeValue from BigTable b 
INNER JOIN SmallTable s on (b.CategoryFK = s.CategoryPK) 
where s.Type = 'Blah'

CREATE UNIQUE CLUSTERED INDEX PK_BigTableSubset ON BigTableSubset
(ID) 
INCLUDE (SomeValue)
Run Code Online (Sandbox Code Playgroud)

(BigTable.ID是BigTable上的PK)

查询性能大大增加(因为需要Bigtable中的子集已经存储),但我会确保SQL可以更新索引本身在最优化的方式时,无论是源表进行更新。

所以问题是:我是否需要在视图的聚集索引中包含 SmallTable.CategoryPK 以确保这一点,或者 SQL 是否会作为索引结构的一部分自动执行此操作?或者换句话说,每次“左手”(SmallTable)表更新时,SQL 如何识别索引中的哪些页面需要更新,我是否需要做任何事情来促进这一点?

sql-server materialized-view sql-server-2012

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

重新运行特定的实际查询计划

我已经捕获了特定查询的实际查询计划。

在此之后,我更改了一些内容(包括更新统计信息)并重新运行该特定查询。现在实际的查询计划是不同的(这是有道理的)。

查询现在运行得更快了。我很好奇新的执行计划是否与此有关,因为其他更改(对 IO 设置、VM 设置、sql 实例重新启动等的更改)也可能导致性能提高。为了测试这一点,我想再次运行查询,并尝试强制 SQL Server 使用旧的执行计划。

问题:有没有办法使用用户提供的执行计划重新运行查询,甚至直接从这样的计划运行查询?

这是我试图弄清楚的:

所以底线:这可能吗?如果是这样:如何?

sql-server execution-plan sql-server-2012

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

如何为链接服务器启用分布式事务?

我有一个 SQL Server 2012 实例,其中一个链接服务器使用 System i Access ODBC 驱动程序指向 IBM Iseries 系统上的 db2 数据库。

我正在尝试启用分布式事务。我相信该提供商确实根据IBM 文档支持它们(除非我误解了该链接)。

我正在运行以下查询:

BEGIN TRANSACTION
    UPDATE LINKEDSERVER.LINKEDDATABASE.SCHEMANAME.TABLENAME SET COLUMN = VALUE

    SELECT CAST('qwerty' as integer) -- we want an error here so the transaction fails
COMMIT TRANSACTION
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

链接服务器“LINKEDSERVER”的 OLE DB 提供程序“MSDASQL”返回消息“[IBM][System i Access ODBC 驱动程序]登记 DTC 阶段失败。2”。消息 7391,级别 16,状态 2,第 2 行 由于链接服务器“LINKEDSERVER”的 OLE DB 提供程序“MSDASQL”无法开始分布式事务,因此无法执行该操作。

我对这个错误所做的所有研究都遇到过想要禁用分布式事务而不是让它们工作的人。我已经在链接服务器属性上将“启用分布式事务的提升”设置为 true。

任何想法如何让这个工作?

编辑:更多信息/更新。当我在 Windows 日志中注意到这一点时,我正准备暂时放弃这个并等待帮助:

当 XA 事务被禁用时,调用者试图注册一个 XA 资源。

我找到了这个链接,它告诉我如何修改 …

sql-server linked-server sql-server-2012 iseries distributed-transactions

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

如何使用单列创建复合主键的外键?

我正在使用一个已经存在的“查找”样式表,它在 Microsoft SQL Server 2012 中有一个复合主键(不是我的设计)。我想在另一个表中向它添加一个外键,但只有一个单列,我正在寻找一种解决方法,无论多么不合理(基于 CLR 的自定义库或 dll 劫持,甚至),只是为了看看需要做多少。

下面是一个例子:

CREATE TABLE dbo.Lookup (
    FieldName VARCHAR(100) NOT NULL,
    Value VARCHAR(100) NOT NULL,
    PRIMARY KEY (FieldName, Value)
)

INSERT INTO Lookup (FieldName, Value)
SELECT 'This', 'A' UNION ALL
SELECT 'This', 'B' UNION ALL
SELECT 'That', 'A'

CREATE TABLE dbo.OtherTable (
    ID INT PRIMARY KEY IDENTITY(1,1),
    Blah VARCHAR(100)
)

ALTER TABLE dbo.OtherTable WITH CHECK ADD CONSTRAINT [FK__OtherTable__Blah] 
FOREIGN KEY(Blah) REFERENCES Lookup (Value)

--Cannot create this: 
--"There are no primary or candidate …
Run Code Online (Sandbox Code Playgroud)

foreign-key sql-server sql-server-2012

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

在主键上使用包含列的第二个索引有什么好处?

我正在查看我们的数据库并注意到在特定表上我们有以下索引:

Col1    INT IDENTITY(1,1) Primary Key
Col2    INT
...
about 15 more columns
....
ColN   VARCHAR(50)
....
another 10 more columns
Run Code Online (Sandbox Code Playgroud)

除了标准的主键聚集索引之外Col1,我们还有以下索引:

create nonclustered index [iTable-Col1] ON [dbo].[Table1]
(
    Col1
)
include ( ColN )
Run Code Online (Sandbox Code Playgroud)

我们定期搜索Col1并且只想检索ColN. 该索引确实得到使用,因为它是包含满足查询所需的所有数据的最小索引。

我的问题是,这个索引对 SQL Server 有什么好处吗?我们最好放弃它并只在聚集索引上进行搜索吗?

我唯一的想法是这个索引比聚集索引(25mb vs 300mb)小得多,这可能会使搜索和/或缓存更快。

如果有任何区别,服务器是 SQL Server 2012。

index sql-server index-tuning sql-server-2012

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

如何最小化 SQL Server 中的日志操作以避免“日志已满”错误

我在生产中有一个数据库,它不断地填充日志文件,它是一个数据仓库,并且有许多作业/查询正在运行。下面是我得到的错误

Msg 9002, Level 17, State 4, Line 7
The transaction log for database  is full due to 'ACTIVE_TRANSACTION'. 
Run Code Online (Sandbox Code Playgroud)

现在这是有道理的,我明白 SQL 无法执行操作,因为它的日志文件已满。我有两个日志文件

  • 启用无限制增长和自动增长的 D 盘 [D 盘大小 180 GB]
  • E盘静态大小[E盘120GB,日志文件大小:20GB]

我对这个问题做了一些研究,并找到了可能的解决方案:来源

  • 备份日志。
  • 释放磁盘空间,以便日志可以自动增长。
  • 将日志文件移动到具有足够空间的磁盘驱动器。
  • 增加日志文件的大小。
  • 在不同的磁盘上添加日志文件。
  • 完成或终止长时间运行的事务。

现在,假设我的空间有限(即 180 GB + 20 GB),我认为这对于 SIMPLE RECOVERY MODE 中的数据库来说已经足够了。我怎么可能发现这个问题并在它发生之前进行纠正?

复制

我试图通过使用以下设置创建新的示例数据库来复制此场景 在此处输入图片说明

和下面的查询以获取百万行并将它们插入表中

SET NOCOUNT ON;
DECLARE @SET_SIZE INT = 500000000;

CREATE TABLE dbo.Test500Million (N INT  PRIMARY KEY CLUSTERED NOT NULL);

;WITH T(N) AS (SELECT N FROM (VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL)) AS …
Run Code Online (Sandbox Code Playgroud)

shrink transaction sql-server-2012 transaction-log

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