我想每 3 秒运行一次作业,但是在 SQL Server 2008 中我们不能定义小于 10 秒的间隔。
该作业用于将访问者信息和细分信息插入/更新到由谷歌搜索跟踪的数据库中。
在 2 或 3 秒内最多插入大约 100 行。该作业插入并更新数据库中的表。有没有办法使用sp作业调度配置来调度它?
它没有发生在我身上。但我正在考虑这个问题。
我在弄乱我的训练环境,误点了数据库名称,然后我触摸了字母A。

假设我按下了回车键。现在数据库叫A,不记得原来的名字了。CTRL + Z 不起作用。

在这样的情况下,在生产环境中该怎么办?
我知道这不可能发生,因为数据库没有设置为 SINGLE USER。但如果发生了。该怎么办?为了论证起见,假设它是一个现在没有人使用的数据库。
我们的生产服务器平均每秒运行 4,000 个事务。在过去几天中,平均每秒事务数跃升至 175,000 次。这不是打字错误,它是每秒 175K。
查看交易的 DMV,我们无法将其直接链接到用户会话,但我们确实看到了这一点:
SELECT NAME,
COUNT(*)
FROM sys.dm_tran_active_transactions
GROUP BY NAME
ORDER BY 2 DESC
Run Code Online (Sandbox Code Playgroud)
——
+------------------------------+-------+
| Name | Count |
+------------------------------+-------+
| WorkFileGroup_fake_worktable | 627 |
| LobStorageProviderSession | 217 |
| workfile | 171 |
+------------------------------+-------+
Run Code Online (Sandbox Code Playgroud)
任何人都可以阐明这些类型的交易吗?还是我在这里追鬼?
Select FullName, Login
FROM [User]
ORDER BY FullName desc, login asc
Run Code Online (Sandbox Code Playgroud)
Select FullName, Login
FROM [User]
ORDER BY FullName desc, login asc
Run Code Online (Sandbox Code Playgroud)
FullName Login
----------------------------- ------------------------------
M...... H......... mh..@...com
A.... H..... ad..@...com
NULL and..@...com
NULL ben..@...com
NULL roc..@...com
Run Code Online (Sandbox Code Playgroud)
I want the full name in abc order desc and same with login, but I want all nulls to go to the bottom.
我使用的是 SQL Server 2008 Standard,它没有 SEQUENCE功能的。
外部系统从主数据库的几个专用表中读取数据。外部系统保留一份数据副本并定期检查数据中的更改并刷新其副本。
为了使同步高效,我只想传输自上次同步以来更新或插入的行。(这些行永远不会被删除)。要知道自上次同步以来更新或插入了哪些行,有一bigint列RowUpdateCounter,每个表中。
这个想法是,无论何时插入或更新一行,其RowUpdateCounter列中的数字都会改变。RowUpdateCounter应从不断增加的数字序列中获取进入该列的值。中的值RowUpdateCounter列中的应该是唯一的,并且存储在表中的每个新值都应该大于任何以前的值。
请参阅显示所需行为的脚本。
架构
CREATE TABLE [dbo].[Test](
[ID] [int] NOT NULL,
[Value] [varchar](50) NOT NULL,
[RowUpdateCounter] [bigint] NOT NULL,
CONSTRAINT [PK_Test] PRIMARY KEY CLUSTERED
(
[ID] ASC
))
GO
CREATE UNIQUE NONCLUSTERED INDEX [IX_RowUpdateCounter] ON [dbo].[Test]
(
[RowUpdateCounter] ASC
)
GO
Run Code Online (Sandbox Code Playgroud)
插入一些行
INSERT INTO [dbo].[Test]
([ID]
,[Value]
,[RowUpdateCounter])
VALUES
(1, 'A', ???),
(2, 'B', ???),
(3, 'C', ???),
(4, 'D', ???);
Run Code Online (Sandbox Code Playgroud)
预期结果 …
我有一个包含多列的表,想要检查列值,选择该列值之后的行,直到出现单独的列值。我试过使用BETWEEN,但如果列值是整数,它只查找整数之间的数字。
例如,如果我有一张这样的表:
id 时间值 t1 12:00 PM 15 t1 12:02 下午 4 t1 12:03PM 7 t1 12:05PM 16 t5 下午 12:10 250 t5 12:15 下午 15 t8 上午 11:00 15 t8 下午 3:00 2 t8 下午 3:05 100 t2 7:00 PM 15 t2 7:01 下午 16 t15 5:00AM 35
我想获取值 15 和 16 之间的行。基本上,如果我可以按id,然后time,并收集 15 出现后的行,直到在同一id. 如果没有值 16,例如我想要接下来的 100 行,然后搜索下一个值 15。
我希望查询返回这个:
id 时间值 t1 12:00 PM 15 t1 12:02 下午 4 …
DBCC CHECKDB 返回:
无法为数据库 'tempdb' 中的对象 'dbo.SORT 临时运行存储:140737951236096' 分配空间,因为 'PRIMARY' 文件组已满。
通过删除不需要的文件、删除文件组中的对象、向文件组添加其他文件或为文件组中的现有文件设置自动增长来创建磁盘空间。
消息 9002,级别 17,状态 4,第 1 行
我们的管理员使用 Visual Studio 2015 设置了一个全新的 Windows 2012 R2 服务器。当我尝试从 Visual Studio 连接到现有的 sql server 2008 数据库(在 Windows 2008 r2 服务器上运行)时,使用Tools-> Connect to database...,我可以输入所有信息,对话框检索数据库列表,Test Connection工作,但当我点击ok我得到:
必须信任计算机进行委派,并且必须将当前用户帐户配置为允许委派
两台服务器都在同一个域(开发)下,我是它们的本地管理员。我的帐户虽然位于可以访问开发域的不同域上。
有想法该怎么解决这个吗?他们是指消息中的 windows 2012 服务器还是数据库服务器?
顺便提一下,我可以使用相同的 Windows 帐户从另一个 Windows 2008 r2 服务器成功连接。
更新:失败的连接使用 Windows 身份验证。
我有一个堆表,它占用大约 104 GB 的磁盘空间,几乎有 30 亿行。我正在尝试在 [ WeekEndingDate] 列上的该表上创建聚集索引。我在数据文件中有大约 200 gb 的空闲空间,在 tempdb 中有大约 280 gb 的空闲空间。
我尝试了两种不同的方法。首先是使用以下命令直接在表上创建索引:
CREATE CLUSTERED INDEX CX_WT_FOLD_HISTORY
ON WT_FOLD_HISTORY (WeekEndingDate ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = ON,
IGNORE_DUP_KEY = OFF
, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON,
DATA_COMPRESSION = PAGE)
Run Code Online (Sandbox Code Playgroud)
我用SORT_IN_TEMPDB = ON和都试过了OFF。使用时ON它填满了 tempdb 并用OFF它填满了数据驱动器。
另一种方法是创建一个具有所需索引的新空白表,然后将堆中的记录插入到新表中。这在填充数据驱动器后也失败了。
关于做什么的任何其他建议。我读过的大多数内容都表明,在创建索引时,我需要大约 1.2 倍的表大小才能用作工作区。我有更多的方法,但它仍然失败。任何建议,将不胜感激。
这是我原来的堆表结构:
CREATE TABLE [dbo].[WT_FOLD_HISTORY](
[WeekEndingDate] [varchar](50) NULL,
[Division] [varchar](50) NULL, …Run Code Online (Sandbox Code Playgroud) 试图诊断一个问题,我遇到了这种不一致。在 SQL Server Profiler 中,RPC Starting事件使用区域设置来写入实数(例如:在葡萄牙语(巴西)14.5 中将表示为 14,5)。通常这不是问题,除非 RPC 调用是带有实数参数的存储过程。那么期望表达为:
exec usp_something 'blabla', 14.5
Run Code Online (Sandbox Code Playgroud)
表示为:
exec usp_something 'blabla', 14,5
Run Code Online (Sandbox Code Playgroud)
当你有一个很长的参数列表时,这会让人很头疼。没有在网上找到任何线索如何改变这种行为。
有人知道改变这种行为的方法吗?
顺便说一句:我知道解决方法是改用SP Starting事件,它使用 '.' 为小数点分隔符。
sql-server-2008 ×10
sql-server ×9
tempdb ×2
dbcc-checkdb ×1
index ×1
jobs ×1
null ×1
order-by ×1
profiler ×1