小编mar*_*c_s的帖子

即使在创建存储过程时表存在,有没有办法强制延迟名称解析?

在 SQL Server 中创建存储过程时,您可以引用不存在的表。但是,如果该表确实存在,那么您在该过程中引用的任何列都必须存在于该表中(延迟名称解析)。

是否可以指示 SQL Server 推迟过程中引用的所有表的名称解析,而不管它们是否存在?我确实希望保留一般语法检查,因此即使可能,将存储过程定义破解到系统表中也不是一种选择。

我希望我的要求做到这一点可能看起来有点怪异,所以这里的一些背景:我自动从C#编写的应用程序生成表定义和存储过程,这是非常困难的,我改变代码顺序进行更改为SQL需求他们。我的代码“保证”架构在事务中是一致的,但目前我不能保证在定义引用它们的存储过程之前定义表列。

下面是 C# 创建的 SQL 的规范示例,它“说明”了我试图解决的问题。

--Say this table already exists.
CREATE TABLE myTable
(
    a NVARCHAR(MAX)
)
GO

--My C# code creates something like this
BEGIN TRAN 
GO

--the stored procedure gets generated first.
CREATE PROCEDURE mySproc
AS
BEGIN
    SELECT a,b FROM myTable
END

--then the table update
ALTER TABLE myTable
    ADD b nvarchar(MAX)

COMMIT TRAN 
Run Code Online (Sandbox Code Playgroud)

可能在 C# 代码中修复这个问题,但我希望能有一个简单的“魔法”调整我可以拉入 SQL。这将为我节省很多时间。

t-sql sql-server-2008-r2

10
推荐指数
2
解决办法
3300
查看次数

在 SQL Server 2008 中使用 varchar 的速度影响

在过去,使用varcharoverchar是一个很大的禁忌,因为varchar与行的其余部分存储在不同的页面上。今天的 SQL Server 2008 是否仍然如此?将 1-3varchar(5)列更改为char(5)表中的列,我会看到任何内存/性能提升吗?

a) 说 2.000.000 行 b) 如果任何varchar列是索引/主键的一部分

sql-server-2008 sql-server

9
推荐指数
1
解决办法
953
查看次数

SQL Server - 非阻塞选择语句的隔离级别是什么?

我有一个长时间运行的事务(称为 T1),它对 SQL Server 2008 R2 中的表执行一些删除、更新和插入操作。同时,另一个进程会定期从该表中运行 select 语句。

在默认隔离设置下(我认为是 READ COMMITTED?),T1 会阻止任何 select 语句运行,直到事务提交或回滚。

我希望看到的是,即使在事务正在进行时,select 语句也能对一致的数据起作用。我相信 SNAPSHOT 隔离可以提供帮助,但不确定我是否朝着正确的方向前进。这是该应用程序的最佳隔离级别吗?

其次,我无法控制调用 select 语句的进程,但我可以控制调用 T1 的 .NET 应用程序。select 语句和 T1 都需要更改任何隔离级别,还是仅将 T1 标记为具有不同的隔离级别就足够了?

sql-server transaction locking isolation-level

9
推荐指数
2
解决办法
6720
查看次数

如何使用 UUID 的默认值创建唯一列

我有一个供内部使用的键列,它只是一个递增的整数,但我想要第二个唯一的列,它是一个 UUID,但我不知道如何调用默认值的函数(以便 SQL服务器正在创建 UUID 而不是 java),有没有可以为此向我建议的文档?

sql-server-2005 sql-server

9
推荐指数
2
解决办法
1万
查看次数

SQL Server 2008 R2 安装客户端工具连接

在 SQL Server 2008 R2 安装过程中,我看到“客户端工具连接”和“客户端工具向后兼容性”安装选项的复选框。它说这些是客户端服务器通信的组件。谁能解释一下这些组件是什么?当您选择这些组件时,服务器上实际安装的是什么。

sql-server-2008-r2

9
推荐指数
1
解决办法
2万
查看次数

VARCHAR 主键 - MySQL

目前,我有一个categories包含 2 列的表 -category VARCHAR(50) NOT NULL PRIMARY KEYparent VARCHAR(50). 该parent列是该列的外键 (FK) category

这似乎是最明显的方法。但是,警钟在我的脑海中响起,因为我使用一VARCHAR列作为主键,这可能会在查询表时减慢操作速度。

我可以引入名为cat_id INT AUTO_INCREMENTPK的第三列,但它会引入一个没有意义的新列。

除了哪个更快,还应该考虑哪些其他因素?

NB我预测最多会有1000个类别左右,所以行数不是很高。但是,categoriesPK 列将成为其他表中许多外键的引用列。

我也应该使用(唯一的)用户名作为 PK 吗?

mysql performance foreign-key primary-key varchar

9
推荐指数
2
解决办法
2万
查看次数

Service Broker 终结点处于禁用或停止状态 - AoAG - SQL Server 2012 - 15 分钟间隔

我每 15 分钟在 SQL Server 错误日志中收到此错误消息。我已经在这台服务器上设置了 AOAG。为该实例上的 Blackberry 相关数据库和 MSDB 数据库启用了数据库选项“Service Broker - Broker Enabled”。黑莓支持提到他们不需要启用此功能。我有其他 AOAG 实例,他们没有收到此错误。

请分享您在这方面的智慧。我还没有使用过服务代理,也没有在我的搜索中找到关于堆栈交换的类似帖子。

谢谢

sql-server service-broker sql-server-2012 availability-groups

9
推荐指数
1
解决办法
2万
查看次数

SQL Server DB 一夜之间变得无法使用

昨天,我的 SQL Server 数据库很好。今天它几乎无法使用 - 它的速度减慢了五到二十倍,具体取决于我何时击中它。

一些数据是在夜间加载过程中添加到服务器的,但没有什么能比得上对数据库产生如此大影响的卷。大约 50,000 条纯文本记录(没有 XML 或其他花哨的东西)。

在我们重新启动服务器之前,今天早上打了补丁。但是,我们其他也打过补丁的数据库服务器的行为都没有不同。

资源监视器似乎表明它的磁盘 IO 有问题。它始终以接近 100% 的容量运行 .mdf 文件,即使数据库中实际发生的事情不多。对 Templog.ldf 的访问也非常频繁。

这里没有专家 DBA(我们都是具有不同 SQL 技能的开发人员),我们都对发生的事情感到困惑。我们尝试运行 sp_updatestats 并将一些大索引移动到不同的磁盘,但无济于事。

我认为这一定与补丁有关 - 这似乎太巧合了。一位同事确信是数据负载导致 mdf 的大小增加到导致执行计划效率低下的程度。

这到底是什么造成的?我们如何才能找到,我们可以做些什么来解决它?

编辑:

使用sp_WhoIsActive没有发现任何异常。它记录了我自己对 sproc 的使用以及来自当前正在尝试移动另一个索引的同事的一些命令。这可能现在阻止了数据库,但它之前的运行情况一样糟糕。

它是 SQL Server 2008 R2 的标准版本。SELECT @@VERSION给出:

Microsoft SQL Server 2008 R2 (SP2) - 10.50.4033.0 (X64)
2014 年 7 月 9 日 16:04:25
版权所有 (c) Microsoft Corporation 标准版(64 位),Windows NT 6.1(内部版本 7601:Service Pack 1)(管理程序) )

该服务器具有 72GB 的 RAM …

sql-server sql-server-2008-r2

9
推荐指数
1
解决办法
377
查看次数

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 配置管理器屏幕

在此处输入图片说明

sql-server sql-server-2014 windows-10

9
推荐指数
1
解决办法
2万
查看次数

查询 DMV sys.dm_os_performance_counters 时返回零行

我有一个用户SQL Server 2014 Standard Edition (RTM)具有SYSADMIN与服务器视图状态权限的角色,但是当我执行DMVsys.dm_os_performance_counters返回没有记录。

知道权限有什么问题吗?

在此处输入图片说明

@@Version 的输出:

Microsoft SQL Server 2014 - 12.0.2000.8 (X64) 2014 年 2 月 20 日 20:04:26 版权所有 (c) Microsoft Corporation Standard Edition(64 位)在 Windows NT 6.3(Build 9600:)(Hypervisor)上

sql-server dmv sql-server-2014

9
推荐指数
1
解决办法
1222
查看次数