Questions tagged «sql-server-2012»

SQL Server 2012(主要版本11.00.xxxx)。还请标记sql-server。

3
遍历值一次剥离1个字符
我想遍历值并一次从值中删除1个字符并显示结果。 因此,如果我有一个带有值的表: ID ___ 34679 13390 89906 我希望结果看起来像这样 Id ---- 4679 679 79 9 3390 390 90 0 9906 906 06 6

1
SQL Server 2012年:Security_error_ring_buffer_recorded:ImpersonateSecurityContext
我管理的几个服务器在system_health XE会话中记录了很多事件。 名称:security_error_ring_buffer_recorded api_name:ImpersonateSecurityContext Calling_api_name:NLShimImpersonate 错误代码:5023 error_code 5023应该是(系统错误代码): ERROR_INVALID_STATE 5023 (0x139F) The group or resource is not in the correct state to perform the requested operation. 我在事件安全日志或SQL Server日志中都没有失败的登录事件。

3
如何查找数据库中没有显式主键的所有表?
一次Google搜索发出了数百万点击的信息,说明如何查找没有聚集索引的表,而PK通常是表的聚集索引。但是,表可以轻松地将自然键用作聚簇索引,并具有非聚簇代理索引(例如标识列)。 如何在未定义主键的数据库中查找所有表?我在该数据库中有245个表:手动检查效率很低。




2
查看数据库图所需的权限
我最近设置了SSDT供我们的开发人员使用。通过限制每个开发人员连接到服务器(db_datareader,db_datawriter)时的权限,我们通过SSDT强制对开发数据库进行更改。在SSDT中,我们使用部署脚本将更改发布到数据库,该脚本使用具有提升权限的登录名进行连接。 我的问题。鉴于我们已经竭尽全力来锁定数据库(以防止模式漂移);开发人员是否可以通过任何方式查看此数据库上的图表而无需db_owner权限?我知道每个开发人员都可以创建和查看自己的图,但是我希望他们能够查看由许多不同的开发人员创建的所有图。 我认为这不会有所帮助,但我们正在运行sql server 2012 任何帮助都会得到很大的帮助。

2
如何将SSRS(SQL Server 2012)配置为在不同实例上运行,但与SharePoint在同一服务器上
我有一个运行Windows 2008R2的SQL Server 2012实例以及另一个运行SharePoint的SQL Server 2012实例(我认为这是SharePoint 2010)。 当我尝试访问时,http://localhost/Reports_<InstanceName>我得到: 证书警告(我会继续进行-我不太在乎-它是开发人员计算机) 以下文字: Cannot connect to the configuration database. Google表示该错误消息与SharePoint相关,因此我倾向于认为SharePoint正在劫持SSRS请求。 是否可以对SSRS或其他某些东西(可能是IIS?)进行配置,使我可以访问报表服务器? 注意:我可以通过SSMS连接到Reporting Services。

2
SQL Server插入后触发器
我希望married在对marital_status列上的文本进行插入后触发该触发器,这是我到目前为止的结果 ALTER TRIGGER [dbo].[marriage] ON [dbo].[applicant_personal_info] AFTER INSERT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; IF (SELECT [marital_status] FROM inserted) = 'married' BEGIN INSERT INTO [dbo].[applicant_marriage_info]([dom]) VALUES('abc') END END

2
日志传送-使用STANDBY进行还原-在SQL Server 2012上不断崩溃
我们RESTORE WITH STANDBY在SQL Server 2012上使用日志传送,以便以只读模式还原数据库以进行报告。但是,完成一个或两个日志备份的还原后,日志传送设置不断中断。日志传送仅在以方式运行时才会中断RESTORE WITH STANDBY;RESTORE WITH NORECOVERY不会造成任何问题。 我唯一的直觉是主数据库不是那么动态。因此,当没有事务时,这可能导致RESTORE流程出现问题? 有什么想法,已知的解决方法吗? 我通过运行一个常规工作对几天进行了几天工作,该工作在两个表上进行了大量更新。当作业停止运行时,日志传送设置迅速失败,无法处理.trn文件。我重置了日志传送,并尝试通过进行一次小的更新来查看它是否能够继续运行,无论它仍然失败了,更改表中一条记录的一列的值。 感谢您的所有回复。 PS:摘录自我们的日志 2013年2月25日13:00:00,LSRestore_DBDB01-A_BulldogDB,进行中,1,DBREPORTS,LSRestore_DBDB01-A_BulldogDB,日志传送还原日志作业步骤。,2013-02-25 13:00:12.31 ***错误:无法将日志备份文件'\\ dbsan01 \ DBBackups \ LSBackup_BulldogDB \ BulldogDB_20130225180000.trn'应用于辅助数据库'BulldogDB'。(Microsoft.SqlServer.Management.LogShipping)*** 2013-02-25 13:00:12.31 ***错误:处理数据库'BulldogDB'的日志时发生错误。如果可能,请从备份还原。如果没有备份,则可能需要重建日志。 恢复期间发生错误,阻止数据库'BulldogDB'(8:0)重新启动。诊断恢复错误并进行修复,或从已知的良好备份中恢复。如果错误没有得到纠正或无法预期,请联系技术支持。 RESTORE LOG异常终止。 已处理文件1上数据库'BulldogDB'文件'BulldogDB'的0页。 为文件1(.Net SqlClient数据提供程序)上的数据库'BulldogDB'文件'BulldogDB_log'处理了1页 2013-02-25 13:00:12.32 ***错误:无法记录历史记录/错误消息。(Microsoft.SqlServer.Management.LogShipping)*** 2013-02-25 13:00:12.32 ***错误:ExecuteNonQuery需要打开且可用的连接。连接的当前状态为关闭。(System.Data)*** 2013-02-25 13:00:12.32跳过辅助数据库'BulldogDB'的日志备份文件'\\ dbsan01 \ DBBackups \ LSBackup_BulldogDB \ BulldogDB_20130225180000.trn',因为无法验证该文件。 2013-02-25 13:00:12.32 …

1
对于同一行中的多个选择,是否有比“联合全部”更好的选项?
示例架构: CREATE TABLE [dbo].[Base]( [ID] [int] IDENTITY(1,1) NOT NULL, [Option1ID] [int] NULL, [Option2ID] [int] NULL, [Option3ID] [int] NULL, [Option1Name] [varchar] NULL, [Option2Name] [varchar] NULL, [Option3Name] [varchar] NULL, [Option1LName] [varchar] NULL, [Option2LName] [varchar] NULL, [Option3LName] [varchar] NULL,) 有没有办法获得显示如下的结果: ID | OptionID | OptionName | OptionLName 我试图使用UNION ALL来实现这一点,但是这意味着在我的示例中要在同一行上执行3次,但在我真正的问题中,我必须执行10次。由于遗留代码,我无法规范化表。有没有办法只遍历基本行一次?

3
变更数据捕获-如何知道谁进行了变更?
跟踪谁进行了CDC识别的更改。 按照我的datetime hack,我尝试了相同的方法,将suser_sname添加为cdc更改跟踪表上具有默认值的新字段。但是,这似乎返回了cdc进程的所有者,而不是在基表上发起更改的用户。我也尝试了original_login,但是返回了SQL服务帐户登录名。同样,可能与cdc进程相关,而不与发起更改的用户相关。 我在堆栈溢出中发现了一个类似的问题,但是除了从前端或通过触发器跟踪更改之外,没有其他答案,这似乎无法实现使用cdc的目的。我不会重新发布,但是由于原始版本存在stackoverflow上,所以我想在这里尝试一下,特别是如果R2或2012已引入一种更好的方法。 简而言之:我怎么知道谁在变更数据捕获中进行了更改?


1
不论层次结构,MDX查询RANK
我希望将计算添加到我的SSAS多维数据集(SSAS 2012)中,以显示当前成员相对于该石斑鱼中所有其他成员的相对排名,而无需提前指定石斑鱼。 例如,假设我已经有一个计算,Efficiency其定义为$$ /小时。 我还想添加一个Efficiency Rank计算,该计算将告诉我当前成员在其中设置的相对位置。 我尝试过的语法是 RANK([Measures].[Efficiency].CurrentMember, [Measures].[Efficiency]) 我意识到这是不正确的。 我似乎在其他任何地方都找不到此指南,所以我希望为此制定一些最佳实践或模式,因为这似乎是相对普遍的业务需求。

1
幽灵清理设置
我正在运行一个高事务性的数据库(平均约17.5万笔事务/分钟,每小时将近900万条记录被添加和删除) 直到最近,这还不是什么大问题,因为我们已经添加和删除了约750万条记录,但是随着最新数据的涌入,幽灵清理似乎无法跟上清理工作的步伐。表/索引上未使用的空间。 几天前,我们在16个表(大多数是2个表)中达到了53 GB的“未使用空间”,因此开始研究幽灵清理过程,发现它每5秒运行一次并运行10页。 我当前的解决方案是那天清晨,我正在运行以下命令的三个线程: DECLARE @2hours datetime = dateadd(hour,2,getutcdate()) WHILE getutcdate() < @2hours BEGIN DBCC FORCEGHOSTCLEANUP ('DBNAME') WITH NO_INFOMSGS END 赶上前一天晚上的积压工作(大部分删除操作都发生了) 我想知道是否有办法将默认设置从5秒和10页更改为每秒一次或运行超过20页,是否有任何方法可以这样做,还是我应该继续整理多个清理过程来清除数据,或者是否有其他措施可以帮助您 重新编制索引至少每周一次(大多数情况是隔天一次)对受影响最大的索引进行一次 AlwaysOn高可用性群集上的SQL Server 2012 Enterprise SP3_CU8(明天升级到CU9)也具有复制功能(在单独的服务器上分发)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.