数据库管理员

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

5
为什么此显式强制转换仅导致链接服务器出现问题?
我正在通过原始服务器上的视图从链接服务器查询数据。视图必须包括几个标准化列,如Created,Modified和Deleted,但是在这种情况下,源服务器上的表中不具有任何合适的信息。因此,这些列被显式转换为它们各自的类型。我更新了视图,更改了 NULL AS Modified 至 CAST(NULL as DateTime) as Modified 但是,执行此更新后,视图将触发以下错误消息: 消息7341,级别16,状态2,第3行无法从链接服务器“”的OLE DB访问接口“ SQLNCLI11”获取列“(用户生成的表达式).Expr1002”的当前行值。 我们通常在原始服务器上进行了这种“显式强制转换”更改,而无需担心,我怀疑问题可能与所涉及的服务器版本有关。我们确实不需要应用此强制转换,但感觉更干净。现在,我只是好奇为什么会这样。 服务器版本(来源): Microsoft SQL Server 2012-11.0.5058.0(X64)2014年5月14日18:34:29版权所有(c)Windows NT 6.1(Build 7601:Service Pack 1)(Hypervisor)上的Microsoft Corporation Enterprise Edition(64位) 服务器版本(链接): Microsoft SQL Server 2008 R2(SP1)-10.50.2500.0(X64)2011年6月17日版权所有(c)Windows NT 6.1(Build 7601:Service Pack 1)上的Microsoft Corporation Enterprise Edition(64位)(Hypervisor ) 编辑 我只是意识到我没有发布所有有问题的列而犯了一个错误,我必须为遗漏重要的细节表示歉意。我不知道我怎么没早注意到这一点。但是,问题仍然存在。 转换为DateTime时不会发生错误的转换,而是将列转换为UniqueIdentifier时发生。 这是罪魁祸首: CAST(NULL AS UniqueIdentifier) …

3
为什么表将其主键用作自身的外键
浏览数据库时,我遇到了一个表,该表使用其主键作为自身的外键。 我已经看到,表本身可以具有外键来构建层次结构,但是它将使用另一列来引用主键。 由于主键是唯一的,因此在这种情况下行是否只能指向自身?这似乎是一个重言式的链接,因为如果我已经有了该行,那么我已经有了该行。 有什么理由要这样做吗? 我确定约束是以这种方式编写的(不仅仅是查看图表),因为相同的表和列用于定义的两半。

5
SQL Server不是在Windows启动时启动,而是手动启动
我的SQL Server实例的(SQL Server 2008 R2 Express)服务的启动类型=自动。在过去的几次重新启动计算机后,该服务无法自行启动,但是当我手动启动该服务时,它的启动就很好。 事件查看器显示服务由于连接超时而无法启动。关于此超时,有2个条目: 条目1 等待SQL Server(SQLEXPRESS)服务连接时已达到超时(30000毫秒)。 参赛作品2 由于出现以下错误,导致SQL Server(SQLEXPRESS)服务无法启动:该服务未及时响应启动或控制请求。 我检查了ERRORLOG文件,发现这些Event Viewer条目周围没有错误记录。 有关导致此问题的原因或如何进一步调查的任何想法?

8
教授告诉我们将序列化的Java对象存储为Blob,而不是定义关系表
我的教授告诉我们我们可以将对象映射到ID,而不是实际定义具有正确属性的表: id (int) | Serialized Object (blob) 1 10010110110 我可以看到很多问题。数据冗余,必须分别跟踪ID,必须将整个表放入内存中以搜索任何内容,并且**如果要更改Java代码中的模型,我将不再能够反序列化存储在数据库放入该模型。 我要么永远呆在那个模型上,要么我不得不做一些其他非常丑陋的事情来更改我的模型。**这一切对我来说似乎是不好的形式。我不同意我的教授吗?这样做有没有想到的好处?如果我是正确的话,我应该对我的教授说些什么吗?他正在向全班讲道,甚至说他以这种方式建立了项目。第二个意见将是伟大的。 该课程名为软件设计。 我的教授没有说这是最好的方法,但他确实说这是定义关系表的合理选择。 该模型绝不是动态的。

3
Access(Jet)SQL:TableB中的DateTime戳位于TableA中每个DateTime戳的侧面
第一句话 您可以放心地忽略以下(和包括)JOIN的部分:如果仅想破解代码,则从Start入手。的背景和结果只是作为背景。如果您想查看最初的代码,请查看2015年10月6日之前的编辑历史记录。 目的 最终,我想根据表中可用GPS数据的DateTime时间戳(直接在表中观察数据的侧面)来计算发射机(X或Xmit)的内插GPS坐标。SecondTableFirstTable 我的近期目标实现的最终目标是要弄清楚如何最好地加入FirstTable到SecondTable得到这些侧翼的时间点。以后,我可以使用这些信息,并假设沿着等矩形坐标系进行线性拟合,就可以计算GPS中间坐标(用奇特的话说,我不在乎地球是这个范围的球体)。 问题 有没有更有效的方法来生成最接近的前后时间戳? 由我自己解决,方法是仅抓住“之后”,然后仅获取与“之后”相关的“之前”。 是否有一种不涉及(A<>B OR A=B)结构的更直观的方法。 Byrdzeye提供了基本的替代方法,但是我的“现实世界”经验与他的所有4种执行相同策略的加入策略并不一致。但是,他对替代连接样式的解决也深表感谢。 您可能还有其他想法,窍门和建议。 到目前为止,byrdzeye和Phrancis在这方面都非常有帮助。我发现Phrancis的建议非常出色,并在关键阶段提供了帮助,因此在这里我将给予他优势。 我仍然很感激我在问题3方面能获得的任何其他帮助。项目 符号反映了我认为对个人问题最有帮助的人。 表定义 半视觉表示 第一表 Fields RecTStamp | DateTime --can contain milliseconds via VBA code (see Ref 1) ReceivID | LONG XmitID | TEXT(25) Keys and Indices PK_DT | Primary, Unique, No Null, Compound XmitID | …

2
是否可以在SQL Server中查看LRU-K值?
在SQL Server中sys.dm_os_memory_cache_entries,可以查看缓存中条目的原始成本以及缓存条目的当前成本(original_cost和current_cost)。DMV sys.dm_os_buffer_descriptors包含当前内存中页面的记录以及有关页面的一些元数据。DVM中没有的一个有趣的信息块是数据页的LRU-K值。 是否可以获取SQL Server缓冲池中数据页的LRU-K值?如果是这样,怎么办?
21 sql-server 

6
在Sql Server中,有没有一种方法可以检查选定的一组行是否被锁定?
我们正在尝试更新/删除数十亿行表中的大量记录。由于这是一个受欢迎的表格,因此该表格的不同部分都有很多活动。任何较大的更新/删除活动都会被阻止较长时间(因为它正在等待获取所有行或页锁或表锁的锁),从而导致超时或花费多天才能完成任务。 因此,我们正在更改一次删除少量行的方法。但是我们要检查所选的(例如100或1000或2000行)当前是否已被其他进程锁定。 如果不是,则继续删除/更新。 如果它们被锁定,则移至下一组记录。 最后,回到开始并尝试更新/删除遗漏的内容。 这可行吗? 谢谢,ToC

1
查找最近在数据库上执行的所有查询
[我是初学者级T-SQL程序员] [..希望我在正确的堆栈交换站点上] 我想获得我执行的所有查询的列表(至少,从早上起我今天执行的查询)。我需要报告查询的执行时间。 在线搜索并没有为我提供很多有用的信息。我在网上发现的唯一看起来很接近的查询是 SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query] FROM sys.dm_exec_query_stats AS deqs CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest ORDER BY deqs.last_execution_time DESC 该查询返回了一些奇怪的结果(其中大多数是一堆的存储过程)。而且,所有这些结果都显示从今天下午开始执行的查询(我需要从早上开始执行查询)。 我在之前的问题中找不到任何内容(如果已经提出类似的问题,请指向我)。 我看到了一些有关SQL Profiler的建议,但是我想Profiler仅在我已经开始跟踪时才可以帮助我(如果我错了,请更正我)。 有人可以建议我如何获取自早上以来已在数据库上执行的所有查询的列表(包括查询执行时间)。 [如果我还能以某种方式获得执行查询的用户的用户名,那将是有帮助的(不是必需的)

2
什么是多维数据集中的量度和尺寸
此问题是从Stack Overflow 迁移而来的,因为可以在Database Administrators Stack Exchange上回答。 迁移 6年前。 我是Microsoft Sql Server商业智能的新手Analysis Service(但是我使用SQL Server已有多年的编程经验)。任何人都可以用简单的文字描述多维数据集中的度量和维数(如果可能的话)? 谢谢

2
连接池被重置,错误:18056,严重性:20,状态:46。&Perfmon计数器未显示
我们使用SQL身份验证(以减少连接池的数量)和.NET 4.0连接字符串连接到Windows 2008 R2 Enterprise Server上的SQL Server Enterprise Edition 2012 SP1: Microsoft SQL Server 2012(SP1)-11.0.3000.0(X64) 2012年10月19日13:38:57 版权所有(c) Windows NT 6.1(Build 7601:Service Pack 1)上的Microsoft Corporation Enterprise Edition(64位) 我们使用大约50台服务器,将其分为网站的不同部分8个不同的组。 我们的网站正在使用此SQL Server记录访问跟踪数据。在过去的几天中,它吐出了有关重置连接池的以下消息: 客户端无法重用SPID 1327的会话,该会话已被重置用于连接池。故障ID为46。此错误可能是由较早的操作失败引起的。在此错误消息之前,请检查错误日志中是否有失败的操作。 错误日志显示为: 错误:18056,严重性:20,状态:46 。客户端无法重用SPID 959的会话,该会话已被重置用于连接池。失败ID为46。此错误可能是由较早的操作失败引起的。在此错误消息之前,请检查错误日志中是否有失败的操作。 用户“ xxxx”的登录失败。原因:在重新验证连接登录时,无法打开在登录对象中配置的数据库'xxxxxxxx'。[客户:10.xx.xx.xxx] 经过一番挖掘后,我在CSS博客上找到了该文档:工作原理:错误18056 –客户端无法重用SPID ##进行会话,该会话已被重置用于连接池,Aaron Bertrand 对此进行了重置:故障排除错误18456。我知道错误号不同,但是失败ID相同,并且消息数量相同)。 故障ID 46表示登录名没有权限。我们的登录名默认为master数据库,并且数据库名称在连接字符串中指定。 我想检查连接字符串池等的数量,并检查Perfmon中所有的计数器.Net Data Provider for SqlServer。它只为我defaultdomain9675提供了实例的选项,因此我选择了那是假设它是我们的Datacentre网络的系统生成的ID名称。不幸的是,所有计数器的读数均为零。在我们的其他一台主服务器上,连接池徘徊在10个左右,这是我期望在具有这种负载的正常服务器上看到的。 我的问题是三折 …

3
在热备用服务器上运行pg_dump?
免责声明:我承认还没有尝试过,但是我不确定我是否知道它是否无法正常工作,所以我想问一下。 我想pg_dumpall从运行流复制的热备用服务器(通过)运行每晚备份作业,以避免将该负载放在主服务器上。我只看到有人遇到过一些麻烦,例如在这里和这里,但很少有指导。只要备份保持一致(应该是一致的),只要备份稍微落后于主数据库就可以。 我的问题是: 我是否真的要这样做,还是应该在主服务器上完成备份?为什么? 在备用数据库上进行转储时,需要哪些设置以及正确使用该过程的步骤?例如,我必须在备份期间停止复制吗?

3
父子树层次结构订单
我必须遵循SQL Server 2008 R2中的数据。SQLFiddle 架构: 创建表[dbo]。[ICFilters]( [ICFilterID] [int] IDENTITY(1,1)NOT NULL, [ParentID] [int] NOT NULL默认值0, [FilterDesc] [varchar](50)NOT NULL, [Active] [tinyint] NOT NULL默认值1, 约束[PK_ICFilters]主键 ([ICFilterID] ASC)与 PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS =开启 )在[PRIMARY]上 )在[PRIMARY]上 插入[dbo]。[ICFilters](ParentID,FilterDesc,活动) 价值观 (0,“产品类型”,1), (1,'ProdSubType_1',1), (1,'ProdSubType_2',1), (1,'ProdSubType_3',1), (1,'ProdSubType_4',1), (2,'PST_1.1',1), (2,'PST_1.2',1), (2,'PST_1.3',1), …

2
在另一个SELECT的WHERE子句中使用SELECT
我已经在libpq上为PostrgreSQL创建了一个远程应用程序草案。它的性能很好,但是我已经介绍了该应用程序的一般功能。对于我产生的每个最终业务结果,碰巧我调用了40 select子句(通过tcpip)。 我对SQL Server的回忆使我想起尽量减少远程应用程序与数据库之间的交互次数。分析了我的选择之后,我认为可以SELECT使用联接将这个数目减少到3个子句。但是我不记得SELECT在另一个中使用a的结果的语法SELECT。 例如: SELECT * FROM individual INNER JOIN publisher ON individual.individual_id = publisher.individual_id WHERE individual.individual_id = 'here I would like to use the results of a another select' 这另SELECT一种可能是简单的: SELECT identifier FROM another_table WHERE something='something' 这是简化的表格布局,针对不同的item_types减少了很多次...(3种完全不同的类型,因此对3种SQL查询进行了优化)。 table passage id_passage PK business_field_passage bytea table item id_item PK id_passage …

3
我可以在2008服务器上使用SQL Server Management Studio 2012吗?
此问题是从Stack Overflow 迁移而来的,因为可以在Database Administrators Stack Exchange上回答。 迁移 7年前。 我的学校正在使用SQL Server2008。上次使用它时,我仅在家中安装了SQL Server Management Studio 2008,并使用VPN连接到学校的服务器。 现在,我想再次安装SQL Server Management Studio,但是这次提供了2012版本。 SQL Server Management Studio 2012是否可以在学校的SQL Server 2008上运行?还是我需要2008版本?
21 sql-server  ssms 

8
为什么应用程序不使用sa帐户
我的第一个问题,请保持温柔。我知道sa帐户可以完全控制SQL Server以及所有数据库,用户,权限等。 我绝对相信,没有完善的,以业务人员为中心的原因,应用程序不应使用sa密码。这个问题的答案包括我针对IT讨论的很多理由 我被迫接受一个新的服务管理系统,该系统除非使用sa密码,否则将无法正常工作。我从来没有时间弄清楚为什么要设置评估,但是服务器团队试图将其安装为使用我设置的固定角色,其中包含db_creater和我认为需要的其他权限。失败了。然后,我让服务器团队使用sa帐户进行安装,但在其数据库的dbo角色下以一个帐户运行,但这也失败了。很可惜,我试图用sysadmin角色的帐户来运行它,但是即使失败了,也没有出现有用的错误消息,这些错误消息使我能够确定正在发生的事情而无需花费更多的时间。它仅适用于sa帐户和以明文形式存储在配置文件中的密码。 当我对此进行查询时,服务器团队与供应商进行了交谈,他们得到了一个令人担忧的答案:“这是什么问题?” 然后“好吧,我们可以看看加扰密码” 我知道有一些方法和手段可以限制对文件的访问,但是我认为这只是安全性的另一个弱点 无论如何,我的问题是,有人可以向我指出一些文档,我可以用来向企业解释这是一件坏事的原因,应该是很大的不。我在一个领域工作,这意味着我需要认真对待安全性,并且一直在努力使业务理解,最终无论如何它可能都超出了排名,但是我需要尝试。

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.