AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-171

jcolebrand's questions

Martin Hope
jcolebrand
Asked: 2014-01-30 12:10:59 +0800 CST

我如何才能在生产中最密切地监视此表以找出行消失的原因?

  • 3

设想:

我们编写在线银行软件,目前(由于遗留设计决策)目前正在使用Quartz 2.2作为队列系统来长期执行一些操作。[让我们暂且不讨论它是否是正确的工具,在我们更新到 2.2 之前,它已经运行了很多年]

quartz.net 的一部分具有以下模式表(相关):https ://gist.github.com/jcolebrand/8695603

所以这个过程是我们在这个表中插入记录,比如 80k 条记录。(我有 quartz.net 的三个副本,服务于三种不同的配置,一个有 80k 记录,一个 50k,一个 280k,所以它会有所不同)。我们从其他一些表(记录表)中插入它们,因此重建此表并不是一个可怕的损失。该问题描述如下。

我有一个工具可以批量安排这些任务(其中大部分是一次性的,并且会在未来两周到二十年的任何地方发生,同样,这是关于数据库而不是架构选择)并且我可以调试步骤通过,看到行被毫无顾虑地插入到表中。我可以监控表格并查看它们是否已插入。然后我在 30 分钟后回来(好吧,这部分会有所不同。它们何时消失并不确定)并检查并且记录现在丢失了。

在一个实例的 80k 中,我丢失了大约 2700 条记录。当我运行我的工具时,我看到它们都同步了,过了一段时间,它们又消失了。

这是我尝试过的事情:

  • 检查 SSMS 中的所有事务报告
  • 检查 SSMS 中的所有阻塞事务报告
  • 让我的日程安排应用程序长时间处于打开状态(以防万一,由于某种怪异的魔法,有一个打开的、未提交的事务)
  • 重新启动维护数据库的 Quartz.net Windows 服务应用程序
  • 在禁用 quartz.net windows 服务的情况下插入记录

我没有尝试过的事情:

  • 重新启动 SQL Server
  • 我的查询不使用“with(nolock)”[我听说这对日常使用来说很糟糕]

我认为我应该做但不知道怎么做的事情:

  • 针对实例运行 SQL Profiler 并监视“删除”语句
  • 判断是否有未提交事务的魔法
  • 牺牲独角兽
  • 给朋友打电话
  • 每日双倍

@@版本:

Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64)
Jun 28 2012 08:36:30
版权所有 (c) Microsoft Corporation
Standard Edition (64-bit) o​​n Windows NT 6.1 (Build 7601: Service Pack 1) (Hypervisor )

编辑2014-01-30

出于内部原因,我必须能够准确地证明记录消失的原因,包括但不限于:

  • 被用户删除
  • 未提交的事务
  • Quartz 自身删除
  • 其他一些无法解释的现象
  • 蝴蝶效应
  • 触发效应
  • 独角兽

在可能的情况下,我需要删除中涉及的特定语句。

长话短说

所以,基本上,TL;DR是:插入记录。在长达至少 30 分钟的一段时间内,记录明确显示在针对表的查询中。一段时间后,记录不再显示在对表的查询中。

是什么赋予了?我忽略了什么?您将如何分析此IN PRODUCTION以查看此处发生的情况?

sql-server sql-server-2008-r2
  • 2 个回答
  • 722 Views
Martin Hope
jcolebrand
Asked: 2013-05-21 16:34:58 +0800 CST

多次创建和删除 #SomeTable 是否“合法”?

  • 8

我已经将我的代码隔离为“连贯块”,我可以一遍又一遍地将它们插入到更长的“配置脚本”中,我正在使用的模式之一是:

CREATE TABLE #WidgetSetting 
(
    WidgetID bigint not null,
    Name nvarchar(100) not null,
    Value nvarchar(max) not null,
    CreateDate datetime not null
)

INSERT VALUES

MERGE TABLES

DROP TABLE #WidgetSetting

但是现在 SSMS 抱怨该对象在下次CREATE TABLE触发时已经存在。是什么赋予了?

我认为很明显我将不得不在脚本开头声明一次表,截断而不是删除,但自然而然地,不能删除表并再次使用相同的名称令人沮丧。

sql-server sql-server-2008-r2
  • 1 个回答
  • 488 Views
Martin Hope
jcolebrand
Asked: 2013-03-23 12:59:24 +0800 CST

生成脚本以自动重命名默认约束

  • 8

背景:我们的一些默认列约束是在没有明确名称的情况下生成的,因此我们会得到有趣的名称,这些名称因服务器而异,例如:DF__User__TimeZoneIn__5C4D869D

我希望它们都可以通过一致的命名进行管理,DF_Users_TimeZoneInfo这样我们就可以确保在未来的目标表中存在适当的约束(比如在 RedGate 比较中,甚至只是在视觉上)

我有一个主要适用于我想要的脚本:

select 'sp_rename N''[' + s.name + '].[' + d.name + ']'', 
   N''[DF_' + t.name + '_' + c.name + ']'', ''OBJECT'';'
from sys.tables t
    join
    sys.default_constraints d
        on d.parent_object_id = t.object_id
    join
    sys.columns c
        on c.object_id = t.object_id
        and c.column_id = d.parent_column_id
    join sys.schemas s
        on t.schema_id = s.schema_id
WHERE d.NAME like 'DF[_][_]%'

但这只是给了我一个结果集,而不是我实际上可以传递给 exec 之类的东西。

我怎样才能做到这一点,这样我就可以执行这些sp_rename脚本,而不必复制所有返回的元素并将它们粘贴到新的查询窗口中并再次运行它们?尝试保存尽可能多的击键,以便我可以在许多环境中更正此问题。

在此处输入图像描述

sql-server sql-server-2008-r2
  • 2 个回答
  • 5416 Views
Martin Hope
jcolebrand
Asked: 2013-03-21 08:39:32 +0800 CST

当我收到此错误 15248 时,如何重命名自动命名的约束?

  • 4

在此处输入图像描述

方法:

打开SSMS。找表。打开约束。查找约束名称。右键,重命名。给新名字。

爆炸。(好吧,它只是失败了,至少)

sql-server sql-server-2008-r2
  • 1 个回答
  • 718 Views
Martin Hope
jcolebrand
Asked: 2012-07-12 06:31:40 +0800 CST

能否在 SQL Server 2008(或 R2)上禁用 Windows 身份验证登录?

  • 8

所以我们可以使用 Windows 登录或混合模式,但是我们可以将 SQL Server 配置为仅使用内部登录并阻止所有 Windows 登录吗?

添加所有潜在的 Windows 登录并将其设置为受限权限作为预防性(或反应性)过程的唯一解决方案是什么?

sql-server sql-server-2008
  • 2 个回答
  • 8510 Views
Martin Hope
jcolebrand
Asked: 2011-03-03 13:21:53 +0800 CST

在 SQL 2008 上复制实例的最有效方法是什么?

  • 14

我们有一个简单的数据库实例,数据库中有足够的数据以保持其有用,我们可以将它用于演示目的,我想将它的副本放在我的笔记本电脑上,以便我可以在以下情况下将它用于开发工作我不在办公室。(常规的开发数据库实例约为 150GB,这一实例为 3GB)

在我的笔记本电脑上重新创建实例的最可重复/可编写脚本的方法是什么?我确定我将不得不再次为 SqlServer2008 运行安装程序,并设置一个实例,但在那之后......我想我希望能够每个月左右删除我的旧数据库并且将所有新内容复制到我的笔记本电脑上,因为我的实例在一个演示系统或笔记本电脑上都不会改变。但是数据库本身会更新,更新存储过程等。

我考虑过编写所有“删除数据库文件;添加数据库文件{path}”的脚本并将它们保存在某种可运行的批处理文件中,然后我可以“删除、删除、复制、添加”,但想知道是否有是比 xcopy 和批处理更好的方法吗?

我正在尝试以便宜的方式做到这一点(我们不要总是尝试以便宜的方式做事),所以我对 RedGate 产品或类似产品并不特别感兴趣。我想要一些我可以在自己的文本编辑器中轻松维护的东西。

sql-server-2008 instance
  • 3 个回答
  • 3389 Views
Martin Hope
jcolebrand
Asked: 2011-02-16 06:49:41 +0800 CST

如何重命名本地 SQL 开发服务器?

  • 7

我是一个开发者,他继承了一个大部分功能的盒子来做我需要的大部分工作。除了机器名称仍然是旧开发者的名称(我们将其命名为“{username}-dt”或“{username}-lt”以便于网络上的 id)并且我想将它从 old-username 重命名为我的用户名。

当然,这也会影响 SQL,所以我想在重命名我的机器之前,我会就我需要做什么寻求更有经验的建议。我知道有一些“sp_”sprocs 需要运行,但是我什么时候运行它们呢?我是否需要在之前或之后重新启动我的盒子,我是否需要一定级别的特权?它会破坏盒子上任何现有的基于 Windows 的身份验证吗(这些帐户无论如何都是 AD 帐户)?

sql-server sql-server-2008
  • 3 个回答
  • 2041 Views
Martin Hope
jcolebrand
Asked: 2011-02-07 15:47:29 +0800 CST

日期对齐和对匹配提取最好用 TSQL 或 C# 完成?

  • 6

首先是:我的头衔很糟糕,所以帮我想出一个新的?

我不能在这里发布所有的 SQL(很多超过 30k 个字符),所以我把它贴在pastebin.com上

问题:

我得到一个 XML 文件,我从中抓取了一些记录,我需要从记录中提取一些数据并根据它构建另一个表。这些记录是关于一个事件发生和发生的,我已经在 pastebin 中包含了示例数据以供重新创建。没有看到数据,这有点难以解释。我已经提供了我从样本导入中获得的所有数据,这些数据应该足以构建应用程序,但我没有得到比数据中显示的更多的信息。

我会给你一点时间看一下数据,这样就可以理解了。

所以我需要做的是:对于每个“关闭”事件,我需要将它与下一个“打开”事件匹配,并且我需要在最后有两个表,一个表用于“历史事件”,一个表用于“历史事件”对于“时事”。但是,如果我能正确构建“历史事件”,我就能弄清楚如何从中获取“当前事件”。

商业规则:

如果在“开启”事件之前收集到两个或更多“关闭”事件,则保留最旧的“关闭”事件。如果在“关闭”事件之前收集到两个或更多“打开”事件,则保留最新的“打开”事件。如果有完整的一对,则将它们放入历史表中。如果有一个“关闭”事件而不是“打开”事件,请将其放入当前表中(因此,如果我想继续从该表中插入/删除,那也很好)。如果当前表中已经有一个“关闭”事件,我可以将它移动到历史表中以读取一个“打开”事件(这将需要稍后实现,但如果我可以匹配配对最初我现在可以继续前进。

我认为这几乎就是逻辑。我的想法是要么弄清楚如何在 SQL 中执行此操作,要么将其推送到用 C# 编写的应用程序,并使用 C# 中的一些临时列表来执行此操作,并构建我需要使用的 for...next 逻辑。这在 C# 中可能要容易得多,但我感觉 SQL 可以像 C# 一样轻松地完成这项工作,所以我需要 dba 专家的一些帮助。

我的查询已经不起作用,但这就是我在周五回家之前开始的地方,从那以后我一直在考虑它,并构建一个我可以在线发布的示例问题(以及整个生活你也知道)。数据是实时数据并且是准确的,除了 ID 被匿名化并且文本字段更改为易于使用的内容。

这是一个电子表格,大致显示了我希望数据在结束时的样子以及现在的样子。有当前数据(为清楚起见,每个 ID 之间有一个间隔行)、历史表中的数据(与原始数据的 ID 对齐以便理解)和当前表(再次对齐)。我希望这可以帮助澄清业务规则。 https://spreadsheets.google.com/ccc?key=0AuvCdeHuVU5ddHRCNkpuWHBUREpRajlmLU5VX2xsWnc&hl=en&authkey=COq7y50H

所以完整的 SQL 包括 tabledefs 和当前(非常不正确的)查询在 pastebin http://pastebin.com/k2f2CLnQ

sql-server-2008 query
  • 2 个回答
  • 924 Views
Martin Hope
jcolebrand
Asked: 2011-01-07 14:16:15 +0800 CST

SQL Server 2008 日志文件有最小大小,什么给出以及如何使它们更小?

  • 7

好的,首先,我在创建数据库时搞砸了,使用大致如下的创建脚本:(用于包装目的的人工换行符和名称/路径)

CREATE DATABASE [EXAMPLE] ON  PRIMARY 
( NAME = N'EXAMPLE_Data', FILENAME = N'J:\SQLServer2008\MSSQL.INSTANCE\EXAMPLE.mdf', 
    SIZE = 446046KB , MAXSIZE = UNLIMITED, FILEGROWTH = 10%)
 LOG ON 
( NAME = N'EXAMPLE_Log', FILENAME = N'J:\SQLServer2008\MSSQL.INSTANCE\EXAMPLE.ldf', 
    SIZE = 664505KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO

因为我是从现有的开发数据库中编写出来的,我只是想让一些事情发生。当我没有将我的大小更改为合理的大小(例如4096KB)时,我搞砸了,所以现在我无法将日志文件缩小到大约 600MB 以下。

我知道我哪里出错了,但如何轻松解决?

sql-server sql-server-2008
  • 2 个回答
  • 8078 Views
Martin Hope
jcolebrand
Asked: 2011-01-07 10:04:39 +0800 CST

如何快速收缩所有数据库的所有文件?

  • 52

在 SQL Server(本例中为 2008)中,如何快速收缩实例上所有数据库的所有文件,包括日志和数据?我可以通过 SSMS 并右键单击每个并选择 Tasks -> Shrink,但我正在寻找更快的东西。

我编写了一些“创建数据库”脚本并忘记了它们的默认大小已经膨胀,并且不需要为该项目中的这些文件保留那么多空间。

sql-server sql-server-2008
  • 8 个回答
  • 141736 Views
Martin Hope
jcolebrand
Asked: 2011-01-07 07:43:08 +0800 CST

如何在不安装新实例的情况下更改 MS SQL 2005 中的实例名称?

  • 13

我有一个实际上没有任何东西的实例,它只是被安装(它是为一个项目设计的,但实际上从未在此服务器上完成,该项目在另一台服务器上重复完成)所以因为我有实例,我想重命名它。

这可以做到吗?我该怎么做?


进一步调查(谷歌搜索)说这不太可能。与我的同事进行的额外咨询说我不妨安装一个 2k8 实例并继续前进。

sql-server-2005 instance
  • 2 个回答
  • 7017 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve