小编Aar*_*and的帖子

查找包含子查询的 GUID 的“不在”空值的查询不返回任何结果

当我有一个查询来检查uniqueidentifer具有空值的表中是否不存在类型的列时,我不会得到任何结果。如果子查询不返回空值,则它工作正常,并且仅在使用not in.

我知道我可以只not null检查我的子查询,但我很好奇为什么这不起作用。

查询示例:

select a.guid from tableA a where a.guid not in (select b.guid from tableB AS b)
Run Code Online (Sandbox Code Playgroud)

工作测试:

select 1 where newid() not in (select newid())
Run Code Online (Sandbox Code Playgroud)

破碎测试:

select 1 where newid() not in (select null)
Run Code Online (Sandbox Code Playgroud)

null sql-server uniqueidentifier subquery

5
推荐指数
3
解决办法
5262
查看次数

为什么我无法查看 Web 应用程序创建的 SQL Server 数据库?

我有一个 ASP.NET MVC Web 应用程序部署到 Windows Server 2012 机器上的 IIS。当应用程序第一次启动时,它会在必要时通过实体框架创建它需要的数据库和表。这一切正常,现在我想通过 SQL Server Management Studio 对数据库进行一些管理。但是,当我打开该工具时,我只能看到系统数据库。如果我从连接字符串中删除“User Instance=true”并让应用程序再次创建数据库,我就可以看到数据库。

当User Instance=true 在连接字符串中时,为什么我无法查看Web 应用程序创建的数据库? 如果我使用具有所有角色的帐户通过 Management Studio 查看服务器实例,我希望它能够查看任何和所有数据库。

一些可能有帮助的细节:

该应用程序在 Web.config 中使用以下连接字符串:

<add name="DefaultConnection" connectionString="Data Source=.\SqlExpress; 
  Initial Catalog=Foo.Dashboard;  Integrated Security=SSPI;User Instance=true" 
  providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)

在IIS中,应用程序池设置为与身份运行LocalServiceLoad User Profile设置True。在 SQL Server Express 上,我们为该Local Service帐户添加了一个登录名并为其分配了dbcreator角色。当应用程序启动时,它就能够创建数据库和表,一切似乎都在运行。

然后我使用远程桌面连接到服务器并打开 SQL Server Management Studio。要连接到数据库,我输入.\SQLEXPRESS服务器名称并使用Windows Authentication. 然后我连接并且只看到系统数据库。我已将所有可能的数据库角色添加到我的登录名中,并且我看到我VIEW ANY DATABASE在有效选项卡中拥有权限。

sql-server ssms entity-framework t-sql sql-server-express

5
推荐指数
1
解决办法
2836
查看次数

Management Studio 无法识别其他文件扩展名

我正在使用 SSMS 2012。我正在使用 .PRC、.TAB 和 .UDF 文件。我将这些文件扩展名添加到 SSMS,以便它已经通过工具 > 选项 > 文本编辑器 > 文件扩展名将它们视为 .SQL 文件,但最近 SSMS 已停止识别这些文件(例如,不会使用颜色编码显示它们或允许我对数据库运行它们)。有趣的是,当我从文件中删除文件扩展名时,它会识别它们,因为它选中了“将无扩展名的文件映射到 SQL 查询编辑器”。

有谁知道问题可能是什么?

sql-server ssms

5
推荐指数
1
解决办法
2568
查看次数

减少数据库大小以还原到 SQL Server Express

我有一个 SQL Server 2008 R2 数据库,大约 15 GB。

我想为使用 SQL Server 2008 R2 Express 的合作伙伴复制它。

我删除了很多表和行,现在我确定数据小于2 GB。

我做了一个备份,发送给合作伙伴,他试图恢复它,但他收到一个错误:

CREATE DATABASE 或 ALTER DATABASE 失败,因为由此产生的累积数据库大小将超过每个数据库 10240 MB 的许可限制

我做错了什么?

sql-server sql-server-2008-r2

5
推荐指数
1
解决办法
4万
查看次数

更改数据库文件所需的权限

完全是在管理数据库的开始。

使用 EMS SQL 管理器...最新版本。我怎么过来下面

ALTER DATABASE joneslocker2
MODIFY FILE (
    NAME = joneslocker2, 
    MAXSIZE = UNLIMITED )
GO
Run Code Online (Sandbox Code Playgroud)

这导致错误:

用户无权更改数据库“joneslocker2”、该数据库不存在或该数据库未处于允许访问检查的状态。

我不知道接下来要设置什么。

sql-server permissions

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

sys.dm_exec_procedure_stats DMV 内容与 BOL 矛盾

我做的长时间运行的存储过程的一些分析和所遇到的异常的东西,根据网上图书sys.dm_exec_procedure_stats应该只显示一个每缓存的存储过程的计划行,但是有存储过程一个用户出现两次在表中。

此存储过程的两个“版本”具有截然不同的执行时间/计数。

这仅仅是因为缓存和使用了不同的计划吗?如果是这样,我没有意识到 sql server 为同一个 object_id 缓存了多个计划,我认为这是一种一对一的交易?另外,如果是这种情况,它似乎与 DMV 的 BOLS 定义相矛盾?

继此,如果使用计划的两个版本,我怎么能知道在什么情况下使用什么样的计划?

其他人遇到过这个吗?

sql-server stored-procedures sql-server-2008-r2 dmv

5
推荐指数
1
解决办法
361
查看次数

SQL Server 2012 OUTPUT 子句中的错误

给定以下针对 AdventureWorks 数据库的 SQL 代码:

begin transaction;

drop trigger Sales.iduSalesOrderDetail;
alter table Sales.SalesOrderDetail
    add LineNumber int null;
go

with sod as (
    select
        SalesOrderID, 
            /* other cols */
        LineNumber,
        NewLineNumber = row_number() over 
            (partition by SalesOrderID order by SalesOrderDetailID) + 1
    from Sales.SalesOrderDetail
    where SalesOrderID <= 44000)
update sod
set LineNumber = NewLineNumber,
    ModifiedDate = getdate()
output
    inserted.SalesOrderID, 
    /* other cols */
    inserted.LineNumber;

select
    SalesOrderID, 
    /* other cols */
    LineNumber
from Sales.SalesOrderDetail
where SalesOrderID <= 44000;

rollback transaction;
Run Code Online (Sandbox Code Playgroud)

在 SQL …

sql-server sql-server-2012

4
推荐指数
1
解决办法
763
查看次数

零数据丢失的备份策略

我正在做一个项目,它有大约 10 万条记录。我们可以承受 1 天的停机时间,但我们需要数据始终以最新状态提供给我们。

我经历了两种选择:

1) 镜像(将在未来版本中弃用)

2) AlwaysOn 可用性组

两者看起来都不适合我的场景,因为镜像很快就会过时,并且可用性组仅在 SQL Server 的企业版中可用。我们只有BI版。

除了这些,还有什么好的选择吗?我们甚至准备花钱购买 3rd 方工具,但目前买不起企业版。

sql-server backup sql-server-2012

4
推荐指数
1
解决办法
1950
查看次数

架构和用户权限

当我们自定义的、自产的 CMS 使用 GUI 创建数据表时,它会根据特定于站点的用户模式(即sitename)而不是模式创建它们dbo

问题是我们的站点特定用户目前没有“看到”这些其他模式,即使他们在db_owner角色中。因此,某处缺少权限设置,这将授予他们对这些表进行读写的能力。 

迁移到新的 SQL 服务器时发生了此问题。从 2005 工作组版到 2008 网络版。

schema sql-server permissions users

4
推荐指数
1
解决办法
390
查看次数

我应该将文档版本字段设置为主键的一部分吗

我应该将文档版本设置为主键吗我正在开发一个文档管理系统,并且我有这两个表代表整个表的一部分。

在此处输入图片说明

在 DocumentVersion 表上,我将主键设置为 (version + documentID) 。如果这是一种推荐的方法,其中 documentID 的类型为 int 而版本的类型为 decimal(5,2) ,那么任何人都可以提出建议吗?或者如果我创建一个新字段并将其设置为 DocumentVersion 表中的主键会更好?谢谢

sql-server-2008-r2 surrogate-key table

4
推荐指数
1
解决办法
408
查看次数