标签: sql-server

sqlproj 中的引用程序集未部署到服务器

我有一个Visual Studio 2013数据库项目这需要一个修改版本FASTJSON作为参考。我在参考属性中选择了 Generate DDL,如下图所示:

fastJSON 属性面板

在 .sqlproj msbuild 文件中:

<Reference Include="fastJSON">
  <HintPath>..\..\fastjson\output\net40\fastJSON.dll</HintPath>
  <GenerateSqlClrDdl>True</GenerateSqlClrDdl>
</Reference>
Run Code Online (Sandbox Code Playgroud)

但是 bin/debug/Project.sql 不包含CREATE ASSEMBLY fastJSON . . .. 手动添加程序集工作,然后我的项目将部署和运行。我该怎么做才能让 Visual Studio 部署我的程序集?

sql-server sql-clr visual-studio-2013 database-projects

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

SQL Server 升级失败后如何“hack-drop”数据库​​快照

我正在处理SQL Server 升级到 2014 后无法删除数据库快照问题。快照已失效但无法删除。

现在,虽然 Connect 项目中有一个令人失望的评论,但我认为这最终会得到解决。但是,我需要尽快处理这个问题。

有没有办法删除由于此错误而无法删除的数据库快照?我担心我已经用尽了所有记录在案的方法来做到这一点。可能需要对系统表进行未记录的修改。有没有办法强制删除数据库(快照)?

sql-server sql-server-2014

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

向服务器发送请求时发生传输级错误

在我们的 Vb.net 应用程序(办公室内部本地网络连接中的用户)中,从很长时间以来,一些用户每天都会遇到错误

向服务器发送请求时发生传输级错误。(提供者:TCP 提供者,错误:0 - 远程主机强行关闭了现有连接。

我已经检查过以下

  1. 所有数据库都设置为自动关闭关闭

  2. 没发现太多网络问题,网速不错。

  3. 当我签入 SSMS 时,服务器属性下的远程查询超时设置为 600 秒

  4. 我检查了 sql server 日志,没有发现与之相关的错误或相同的错误消息

那么这个错误的原因可能是什么?以及如何解决它?

sql-server sql-server-2008-r2 tcpip

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

无法通过 SQL 身份验证使用 SA 登录

我无法使用 SQL Server 身份验证登录到 SQL Server 2008。

我只能使用 Windows 身份验证模式登录。

我在安装 SQL Server 2008 R2 时只选择了默认值。

authentication security sql-server sql-server-2008-r2 logins

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

为什么我的计划指南没有被使用?

我们最近遇到了临界点问题,我们的一些报告查询过去需要在几秒钟内完成执行,现在需要超过 2 分钟,因为查询优化器只是忽略了搜索列上的非聚集索引。下面是一个示例查询:

select top 100 *
from   [dbo].[t_Call]
where  ID > 0 
  and  throwtime between '3/20/2014 7:00:00 AM' and '3/24/2014 6:59:59 AM'
order by id
Run Code Online (Sandbox Code Playgroud)

ID列是聚集索引并且Throwtime具有非聚集索引。在这种情况下,我们注意到 ordering bythrowtime而不是ID更改查询计划和非聚集索引被使用。我们还计划存档一些旧数据(它目前有 2000 万行!!)。但是在应用程序中进行这些更改需要一些时间,我需要找到一种方法来使报告运行得相当快,而无需在应用程序级别进行更改(哦,这就是生活!)。

进入计划指南。我使用非聚集索引查询提示创建了以下计划指南,但出于某种原因,仍未使用非聚集索引。我错过了什么吗?

EXEC sp_create_plan_guide 
@name = N'[prod2reports_callthrowtime]', 
@stmt = N'select top 100 *
          from   [dbo] . [t_Call]
          where  ID > @0 and @1 < = ThrowTime and ThrowTime < = @2 order by ID',
@type = N'SQL', 
@module_or_batch = N'select …
Run Code Online (Sandbox Code Playgroud)

performance sql-server execution-plan plan-guides query-performance

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

缺少“将数据库部署到 SQL Azure”任务

我最近在我拥有的工作站上安装了 SQL Server 2014 Express,并正在尝试部署到 SQL Azure。我之前在使用 SQL Server 2012 Express 的以前的工作站上通过执行以下操作完成了此操作:

右键单击数据库 > 任务 > “将数据库部署到 SQL Azure”

在 SQL Server 2014 上,该选项完全丢失,取而代之的是一个新选项:“将数据库部署到 Windows Azure VM”

我不明白为什么缺少部署到 SQL Azure 的选项。现在是否需要为 SQL Server 2014 单独安装一些东西?从我在网上阅读的内容来看,2014 版应该有这两个选项。Microsoft 是否为 SQL Server 2014 Express 删除了此选项?

sql-server azure-sql-database sql-server-2014

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

查看和编写对象的权限,但不能更改它们?

我是一名软件开发人员。

我有一个生产数据库,我需要完全 ddl 读取访问权限,但不需要任何 ddl 写入或执行访问权限。

是否有我可以发送给我的 DBA 的脚本,该脚本将授予我完整的 ddl 读取访问权限,而不允许我影响数据库?

sql-server permissions ddl sql-server-2012

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

表存储层次结构中的层次结构权限

假设以下数据库结构(如果需要可以修改)......

在此处输入图片说明

我正在寻找一种很好的方法来确定给定页面上给定用户的“有效权限”,这种方式允许我返回包含页面和有效权限的行。

我认为理想的解决方案可能包括一个函数,该函数使用 CTE 来执行评估当前用户给定页面行的“有效权限”所需的递归。

背景和实施细节

上面的架构代表了内容管理系统的起点,在该系统中,可以通过添加和删除角色来授予用户权限。

系统中的资源(例如页面)与角色相关联,以向链接到该角色的用户组授予其授予的权限。

这个想法是通过简单地拥有一个拒绝所有角色并将树中的根级别页面添加到该角色,然后将用户添加到该角色,从而能够轻松锁定用户。

这将允许权限结构在(例如)为公司工作的承包商长期不可用时保持原状,然后这也将允许通过简单地从该角色中删除用户来授予他们原始权限.

权限基于典型的 ACL 类型规则,这些规则可能通过遵循这些规则应用于文件系统。

CRUD 权限是可以为空的位,因此可用值是 true、false,在以下情况下未定义:

  • 假 + 任何东西 = 假
  • 真 + 未定义 = 真
  • 真 + 真 = 真
  • 未定义 + 未定义 = 未定义
如果任何权限为 false -> false 
否则,如果有的话 -> true
否则(全部未定义)-> false

换句话说,除非通过角色成员资格授予您任何权限,并且拒绝规则覆盖允许规则,否则您无法获得任何权限。

这适用于的“权限集”是应用于树直到并包括当前页面的所有权限,换句话说:如果应用于树中任何页面的任何角色为假,则结果为假,但是如果到这里的整个树都没有定义,那么当前页面包含一个真正的规则,结果在这里是真的,但对于父级来说是假的。

如果可能,我想松散地保留 db 结构,还请记住,我在这里的目标是能够执行以下操作:select * from pages where effective permissions (read = true) and user = ?因此任何解决方案都应该能够让我拥有一个具有有效权限的可查询集某种方式(只要可以指定标准,返回它们是可选的)。

假设存在 2 个页面,其中 1 个是另一个角色的子级,并且存在 2 个角色,一个用于管理员用户,1 个用于只读用户,两者都仅链接到根级别页面,我希望看到这样的内容作为预期输出:

Admin user:
Id, Parent, Name, Create, Read, …
Run Code Online (Sandbox Code Playgroud)

database-design sql-server hierarchy

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

sp_msforeachdb 在幕后究竟是如何工作的?

我需要解决我遇到的问题,我需要一些帮助来了解 sp_msforeachdb 的工作原理以解决我的问题。

每次运行 sp_msforeachdb 时都会发生错误 Msg 102, Level 15, State 1, Incorrect syntax near '61'

我的代码示例如下:

EXEC SP_msforeachdb 'SELECT ''?'' AS Database
                     FROM ?.sys.objects
                     WHERE name like ''%aetna%''
Run Code Online (Sandbox Code Playgroud)

但是,我将什么查询作为 sp_msforeachdb 的参数并不重要。每次我都遇到同样的错误。我确实有一个以“61s1d”开头的数据库,所以我认为它的数据库名称有问题,但老实说,我不知道 sp_msforeachdb 的幕后情况。

注意事项。

  • 它是唯一以数字开头的数据库
  • 我可以尝试使用类似“如果数据库就像 '%61%' 不要做......”这样的代码,但仍然是同样的错误。
  • 我无法测试更改数据库名称——连接到它的东西太多。
  • 如果我创建一个以“51”开头的测试数据库,那么我也会收到该数据库的错误

我怎样才能克服这个问题?

sql-server stored-procedures t-sql

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

为什么这个执行计划有计算标量?

我有一个简单的SELECT声明。

USE [AdventureWorks2014]
GO

SELECT *
FROM Sales.SalesOrderDetail sod
Run Code Online (Sandbox Code Playgroud)

执行计划有两个Compute Scalar.

显示计算标量的执行计划 为什么是这样?我原以为只得到Index Scan或者Table Scan?

第一个(最右边的)有

 [[AdventureWorks2014].[Sales].[SalesOrderDetail].LineTotal] = Scalar Operator(isnull(CONVERT_IMPLICIT(numeric(19,4),[AdventureWorks2014].[Sales].[SalesOrderDetail].[UnitPrice] as [sod].[UnitPrice],0)*((1.0)-CONVERT_IMPLICIT(numeric(19,4),[AdventureWorks2014].[Sales].[SalesOrderDetail].[UnitPriceDiscount] as [sod].[UnitPriceDiscount],0))*CONVERT_IMPLICIT(numeric(5,0),[AdventureWorks2014].[Sales].[SalesOrderDetail].[OrderQty] as [sod].[OrderQty],0),(0.000000)))
Run Code Online (Sandbox Code Playgroud)

当第二个有:

[[sod].LineTotal] = Scalar Operator([AdventureWorks2014].[Sales].[SalesOrderDetail].[LineTotal] as [sod].[LineTotal])
Run Code Online (Sandbox Code Playgroud)

performance sql-server optimization execution-plan

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