数据库管理员

希望提高数据库技能并向社区中的其他人学习的数据库专业人员的问答

2
SQL Server相当于Oracle USING INDEX子句
在Oracle中是否有与USING INDEX子句等效的SQL Server 2008?专门针对构造: CREATE TABLE c(c1 INT, c2 INT); CREATE INDEX ci ON c (c1, c2); ALTER TABLE c ADD CONSTRAINT cpk PRIMARY KEY (c1) USING INDEX ci; 在有关唯一索引的Sql Server 文档中,它指出了(强调): 唯一索引通过以下方式实现: 主键或唯一约束 创建PRIMARY KEY约束时,如果表上的聚簇索引尚不存在并且未指定唯一的非聚簇索引,则会在一个或多个列上自动创建一个唯一的聚簇索引。主键列不能使用NULL值。 这似乎暗示着有一种方法可以指定应将哪个索引用于主键。

2
如何解决SSIS Excel Connection Manager错误0xC0209303?
我创建了一个SSIS包,该包将excel文件导入到SQL Server表中。 当我在计算机上本地运行SSIS程序包时,它运行没有问题,但是当我在将要安排该程序包的服务器上运行它时,出现以下错误(从文本文件中,我输出错误到使用SSIS日志记录)。 经过研究,我能找到的唯一建议是将Run64BitRuntime属性设置为false,我确实做到了,但还是没有运气。我怀疑这是导致我的错误的原因,因为该错误未指定任何有关64位的内容(就像我发现的文章一样)。 我还认为服务器可能没有适当的Excel驱动程序,但我也不认为是这种情况,因为通常错误消息会说明未注册驱动程序。 我目前没有访问服务器的远程权限。我只能将程序包上传到文件夹,然后由应用程序运行,因此我只能看到的错误消息是我创建的文本错误日志中的内容。 错误代码DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。对连接管理器“ Envision”的AcquireConnection方法调用失败,错误代码为0xC0209303。在此之前可能会发布错误消息,并提供有关AcquireConnection方法调用失败原因的更多信息。 “ Envision”是我的excel连接管理器的名称。 我使用表达式填充Excel文件路径和连接字符串。 连接字符串表达式如下所示: “” Provider = Microsoft.ACE.OLEDB.12.0; Data Source =“ + @ [User :: SourceFilePath] +”;扩展属性= \“ EXCEL 12.0 XML; HDR = YES \”;“ SSIS Pacakge由Windows用户名/帐户执行。我认为这可能是一个Web服务帐户。(BDS_sprtIIS) 关于如何解决仅在我的本地计算机上有效但不能在将软件包部署到的实际服务器上工作的软件包问题,是否有人有任何解决方案或建议? 我在另一个论坛上找到了以下答案,这可能是引起我问题的原因吗?他们基本上是说Excel连接管理器由于某种原因试图访问用户的temp文件夹,如果它无权访问该文件夹,则它将失败: https://social.msdn.microsoft.com/Forums/sqlserver/zh-CN/da77919c-0161-4eb5-bf89-7107d839435a/the-acquireconnection-method-call-to-the-connection-manager-excel-connection-经理失败?论坛= sqlintegrationservices 我也注意到Microsoft.JET.OLEDB.4.0驱动程序将尝试读取已登录用户的配置文件下的temp目录。 。 ...我们使用较低级别的域帐户运行SQL代理,并使用代理帐户运行SSIS包。您是正确的,因为Procmon也为我确认了这一点。我将代理帐户权限授予了配置文件的临时目录(C:\ Documents and Settings \ SQLAgentDomainAccount \ Local Settings …

2
查看每个用户的活动MySQL连接
我需要一个查询,该查询将为我提供某个用户到某个数据库的活动或开放连接数。我一直在寻找时间,到目前为止却一无所获。我很近,所以这是我尝试过的。 SHOW STATUS WHERE `variable_name` = 'Threads_connected'; SHOW STATUS LIKE '%onn%'; SELECT * FROM information_schema.processlist WHERE USER='database_user'; 我在一家网络托管公司工作,我们的一位客户一直在竭尽所能max_user_connections,因此在进行故障排除时,由于他不是共享服务器,我为什么现在需要知道他的用户正在使用多少个连接,因此进行故障排除。我目前正在使用MySQL(InnoDB)5.5.36版。任何帮助将不胜感激!

2
列存储索引中的标识列
我有一个非常大的表IMO(约1.37亿行),其中包含很多重复数据,很多NULL列等等。 我正在考虑使用带有a的表进行探索,COLUMNSTORE INDEX并且IDENTITY在原始表中有一列,这是我唯一的一列,其中每一行都是唯一的。 我应该保留还是不包括此列?我已经读到您想将表的所有行都包含到中,COLUMNSTORE INDEX但是我也读到最好的候选者是具有很多非唯一行的列。 这只是一个不好的候选人COLUMNSTORE INDEX吗? 我正在使用SQL Server 2012,因此它是非群集的列存储。我只是在探索可能更好的方法来存储这些数据。更新是不存在的,尽管新行将通过ELT流程定期添加,所以我假设在那里会做一些工作。一些人挖掘这些数据并生成大量报告,进行大量行扫描,有时使服务器爬网,这迫使我们每天将副本卸载到辅助服务器。

1
递归SQL查询性能问题
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为数据库管理员Stack Exchange 的主题。 4年前关闭。 这是我第六次尝试问这个问题,也是最短的一个。先前的所有尝试都是通过类似于博客文章的方式而不是问题本身来实现的,但是我向您保证,我的问题是真实的,只是它涉及一个大主题,而没有所有这些细节,该问题将包含在其中。不清楚我的问题是什么。所以这里... 抽象 我有一个数据库,它允许以某种幻想的方式存储数据,并提供了业务流程所需的一些非标准功能。功能如下: 通过仅插入方法实现的非破坏性和非阻塞性更新/删除,允许数据恢复和自动记录(每个更改都与进行更改的用户相关) 多版本数据(同一数据可能有多个版本) 数据库级权限 最终与ACID规范和交易安全的创建/更新/删除保持一致 可以将当前数据视图快退或快进到任何时间点。 我可能还没有提到其他功能。 数据库结构 所有用户数据Items均以JSON编码字符串(ntext)的形式存储在表中。所有数据库操作都通过两个存储过程GetLatest和进行InsertSnashot,它们允许对数据进行操作,类似于GIT操作源文件的方式。 结果数据在前端被链接(JOINed)成完全链接的图,因此在大多数情况下不需要进行数据库查询。 也可以将数据存储在常规SQL列中,而不是以Json编码形式存储它们。但是,这增加了总体复杂性。 读取数据 GetLatest结果以说明形式提供数据,请考虑下图进行说明: 该图显示了对单个记录所做的更改的演变。图表上的箭头显示了进行编辑所基于的版本(假设用户正在脱机更新某些数据,与在线用户进行的更新并行,这种情况会引入冲突,基本上是两种数据版本而不是一个)。 因此,GetLatest在以下输入时间跨度内调用将产生以下记录版本: GetLatest 0, 15 => 1 <= The data is created upon it's first occurance GetLatest 0, 25 => 2 <= Inserting another version on top of first …

1
将存储过程结果关联到SSIS变量
我试图将存储过程中的值放入SSIS变量中,然后进行测试以查看如果我添加了一个表达式,两个SSIS任务是否可以工作。因此,例如,我尝试使用此存储过程: 也许我什至在设置SSIS变量属性时都完全错了,因为我也不知道我是否对存储的proc值导入SSIS变量的方法是否正确。如果您还需要其他任何屏幕截图,请告诉我。 这是任务示例: 这是优先约束编辑器的屏幕截图: 这是第一个任务的属性: 我希望它根据这种情况前进(或失败)。但是,当我对其进行测试时,该过程无论从第一个任务流向第二个任务,仅向我显示第一个任务的“ 100%完成”,而与它是否检查此表达式是否正确无关。我该怎么办?出了什么问题?我在SSIS中确实有一个名为“ orderCount”的变量,用于从存储的proc中获取值。

1
查询DMV sys.dm_os_performance_counters时返回零行
我有一个用户SQL Server 2014 Standard Edition (RTM)具有SYSADMIN与服务器视图状态权限的角色,但是当我执行DMV sys.dm_os_performance_counters返回没有记录。 知道权限有什么问题吗? @@ Version的输出: Microsoft SQL Server 2014-12.0.2000.8(X64)2014年2月20日20:04:26版权所有(c)Windows NT 6.3上的Microsoft Corporation标准版(64位)(内部版本9600 :)(管理程序)

2
NoSQL:什么是非结构化数据?
目前,我们基于mssql服务器的解决方案正在资源边缘运行。 现在,关于下一步解决负载的问题,我们有许多传统的选择: 购买更快的CPU和IO 拆分一些客户以分离服务器 将数据库移到群集 就许可和硬件或时间而言,所有这些都是昂贵的。因此,我想通过将整个系统移至nosql引擎cassandra承诺的可伸缩解决方案中来添加另一种选择。 但是,我不确定noSQL数据库也没有使用过SQL数据库,因此我需要了解“非结构化”数据的结构。 在我们的应用程序中,我们基本上将用户以各种方式输入的数据存储为“键值”列表。有一个父表,它包含head元素(如Order),还有一个子表,其键值对包括该订单的内容(如Order_Lines)。 在业务方面,Order和OrderLines是一个单位。但是由于RDBMS,它们存储在表中,并且必须一直连接。 在操作过程中,有时我们选择只加载顶部,但是在大多数情况下,我们加载头行+一些KVP以显示一些有用的信息。 例如,在概述列表中,我们在每行的列中显示头标识符+一些值。 更新:我们存储任何形式的表格。因此,基本上我们存储“文档”。但是,我们必须按任何值,排序等来准备和搜索这些形式。数据访问控制在数据库上增加了另一层兼容性。 您可能会猜到,某些KVP的数量和可用性因对象而异。没有有效的可能性为每种对象创建单个表,因为我们必须为不同的数据组合创建数千个表。 这种“字典”之类的数据集会更好地存储在noSQL数据库中吗?并从中获得性能收益吗?卡桑德拉会将这些head + KVP建模为一个数据集吗?看看cassandra网页和一些教程,我的印象是,在数据组织方面,我们的RDBMS和cassandra之间并没有太大的区别-如果您要选择5个KVP,我们将拥有大量的连接为每一行的列表。 欢迎启蒙,也可以使用指向这些问题的论文的指针。

1
在扩展事件会话上无法观看实时数据
我在PC上运行SQL Server 2014 Developer Edition。我正在尝试在system_health会话中查看数据。在SSMS中,我已连接到数据库,扩展了服务器/管理/扩展事件/会话。我看到AlwaysON_health(已停止)和system_health(正在运行)。 右键单击system_health会话时,出现以下错误: 使用提供的参数初始化存储失败。(Microsoft.SqlServer.XEventStorage)找不到名为“ system_health”的扩展事件会话。确保会话存在并已启动。(Microsoft SQL Server,错误:25728) 我展开system_health并看到目标package0.event_file和package0.ring_buffer。如果我右键单击任一目标并选择“查看目标数据”,则会收到此错误: 使用提供的参数初始化存储失败。(Microsoft.SqlServer.XEventStorage)无法查看功能'fn_MSXe_read_event_stream',因为该功能不存在或您没有权限。(Microsoft SQL Server,错误:15151) 该功能确实存在。我可以运行它: select * from fn_MSXe_read_event_stream('system_health', 0); 当我这样做时,会出现以下错误: Msg 25728, Level 16, State 10, Line 6 The Extended Events session named "system_health" could not be found. Make sure the session exists and is started. 我知道存在system_health会话。我在会话列表中看到: select * …


3
零或一到零或一
如何以最自然的方式在Sql Server中对零或一到零或一的关系建模? 有一个“危险”表,列出了站点上的危险。有一个“任务”表,用于需要在站点上完成的工作。有些任务是修复危险,没有任务可以应对多种危险。有些危害有修复它们的任务。没有任何危险可以使两个任务相关联。 以下是我能想到的最好的方法: CREATE TABLE [dbo].[Hazard]( [HazardId] [int] IDENTITY(1,1) NOT NULL, [TaskId] [int] NULL, [Details] [varchar](max) NULL, CONSTRAINT [PK_Hazard] PRIMARY KEY CLUSTERED ( [HazardId] ASC )) GO ALTER TABLE [dbo].[Hazard] WITH CHECK ADD CONSTRAINT [FK_Hazard_Task] FOREIGN KEY([TaskId]) REFERENCES [dbo].[Task] ([TaskId]) GO CREATE TABLE [dbo].[Task]( [TaskId] [int] IDENTITY(1,1) NOT NULL, …

1
dm_exec_describe_first_result_set_for_object用于多个结果集
是否存在用于返回存储过程中所有结果集的元数据的过程? 类似于sys.dm_exec_describe_first_result_set_for_object,但适用于所有结果集? 最终,我将要发现数据库中每个存储过程中每个结果集的元数据。现在,我将只解决sys.dm_exec_describe_first_result_set_for_object无法描述的结果集。即,第二,第三和第N个结果集。 现在考虑使用SQLCLR来执行此操作: 如何保存具有多个结果集tSQLt 的过程的结果 -SQL Server的数据库单元测试-ResultSetFilter.cs

1
如何回收由部分构建并因断电而终止的索引占用的空间
我正在Mac(10.10.4)上运行Postgres(postgis)9.4.2。 我有几个大桌子(几个TB)。 在其中一个索引建立大约一个星期的过程中,我看到了可用的HD空间下降,正如您所期望的那样,当断电持续时间比电池单元和系统更长时,索引将接近完成索引的时间点下去了。fillfactor=100由于它是静态数据源,因此在构建过程中需要缓冲。重新启动后,驱动器上剩余的可用空间恰好接近索引构建即将结束时的位置。真空分析无法释放空间。 我试着放下桌子并重新吃东西,但并没有减少空间。现在,我在一个没有足够空间来建立索引的地方。 索引构建期间生成的文件是否卡在某个状态中,由于机器在断电期间停机而无法被系统删除? 当我查看db中的表大小+索引(这是该驱动器上的唯一数据)时,它们的总和约为6TB。该驱动器为8TB,而驱动器上剩余的空间不足500GB,因此似乎某个地方丢失了约1.5TB的数据,其大小与索引的大小差不多。 有任何想法吗?

3
sp_WhoIsActive(SQL Server 2008 R2)上有很多“ FETCH API_CURSOR0000…”
我有一个奇怪的情况。使用sp_whoisactive我可以看到: 好的,通过此查询,我可以看到触发了什么(此单词在英语中存在吗?): SELECT c.session_id, c.properties, c.creation_time, c.is_open, t.text FROM sys.dm_exec_cursors (SPID) c --0 for all cursors running CROSS APPLY sys.dm_exec_sql_text (c.sql_handle) t 结果: 这很简单select。为什么使用f etch_cursor? 另外,我也看到很多“空白”的sql_texts。这个“光标”有什么用吗? DBCC INPUTBUFFER (spid) 告诉我这个: 有这个问题 在这里(我做的),但我不知道这是否是同样的事情。 编辑1: 使用kin提供的查询,我看到以下内容: 编辑2: 使用活动监视器,可以看到以下内容: 这是最昂贵的查询(第一个查询是有意的,我们知道)。 再一次,我想知道,为什么这select * from...是FETCH CURSOR... 的原因 编辑3: 此“ select * from...”正在从另一台服务器(通过linked server)运行。 好吧,现在我在理解@kin所说的内容时遇到了问题。 这是execution …

1
SQL Server配置中的SQL Server服务为空
从Windows 8.1升级到Windows 10时,我注意到SQL Server配置管理器中的SQL Server服务为空。目前,SQL Server仍然可以完美运行。SQL Server 2014安装在本地计算机上。 我已阅读了博客-https: //www.mssqltips.com/sqlservertip/2492/why-is-sql-server-configuration-manager-missing-services/和 http://www.sqlservercentral.com/Forums/Topic1469391- 1292-1.aspx,仍然无法解决该问题。 我备份了数据库,卸载并重新安装了该节点,但该节点仍然为空。我该怎么办? 更新了屏幕截图 SQL Server配置管理器屏幕

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.