标签: sql-server-2012

允许存储过程使用SQL Server 2012中的证书从系统表中进行选择

我正在尝试运行尝试从系统表中选择的存储过程时遇到与权限相关的问题.基本上我试图通过直接从sys.dm_tran_current_transaction表中获取我需要的数据来解决SQL Server 2012中sp_bindtoken系统存储过程的弃用问题.

我发现的一个解决方案是:

  • 创建证书
  • 从证书创建用户/登录
  • 授予用户VIEW SERVER STATE权限
  • 使用证书对存储过程进行签名
  • 执行存储过程,该存储过程在刚刚创建的用户的上下文中运行

这种方法似乎在SQL Server 2008 R2中运行良好.但是在SQL Server 2012中,即使脚本看起来运行正常,在运行时,存储过程也会在尝试从上面的系统表中进行选择时失败并显示权限错误.

我目前的脚本看起来有点像这样:

USE OurDatabase
GO

CREATE CERTIFICATE OurDatabaseProcCert
FROM FILE = 'C:\Path\To\OurDatabaseProcCert.cer'
WITH PRIVATE KEY (
FILE = 'C:\Path\To\OurDatabaseProcCert.pvk',
ENCRYPTION BY PASSWORD = '$0m3$tr0ngp@$$w0rd',
DECRYPTION BY PASSWORD = '$0m3$tr0ngp@$$w0rd');
GO

USE master
GO

CREATE CERTIFICATE OurDatabaseProcCert
    FROM FILE = 'C:\Path\To\OurDatabaseProcCert.cer'
WITH PRIVATE KEY (
    FILE = 'C:\Path\To\OurDatabaseProcCert.pvk',
    ENCRYPTION BY PASSWORD = '$0m3$tr0ngp@$$w0rd',
    DECRYPTION BY PASSWORD = '$0m3$tr0ngp@$$w0rd');
GO

CREATE LOGIN OurDatabaseServerLogin
    FROM CERTIFICATE OurDatabaseProcCert …
Run Code Online (Sandbox Code Playgroud)

sql sql-server stored-procedures database-permissions sql-server-2012

11
推荐指数
1
解决办法
1057
查看次数

升级到Sql Server 2012错误Deploy01234后,VS 2010 DB项目无法部署

我有VS2010 Premium,最近从SQL Server 2008R2升级到2012 Developer Edition.现在,当我尝试部署现有数据库项目(使用2008Rs时创建)时,出现以下错误.

错误{name}:无法确定目标数据库架构提供程序

此外,我没有看到从VS中的可用项目模板创建2012年新数据库项目的选项,因为SQL Server数据工具(作为2012升级的一部分已成功安装)应该可用.

visual-studio sql-server-2012

11
推荐指数
1
解决办法
5855
查看次数

如何修复SQL Server 2012的Visual Studio错误"此服务器版本不受支持..."

我最近在Windows Server 2008 R2计算机上安装了Visual Studio 2010和SQL Server 2012(包括所有更新/ Service Pack).

尝试从Visual Studio中处理SQL Server数据库时,VS会引发以下错误:

不支持此服务器版本.仅支持最多Microsoft SQL Server 2008的服务器

我记得当我将SQL Server 2008实例更新到SQL Server 2008 R2时,一段时间(在另一台计算机上)得到同样的错误.当时的修复是安装(或重新安装)Visual Studio 2010 SP1.

现在我再次收到此错误(在新计算机上),我认为重新安装VS SP1就像我回过头一样.但是,这样做并没有解决问题.

似乎Visual Studio可能需要另一个更新来支持SQL Server 2012实例.

为清楚起见,以下是我为产生错误所采取的步骤:(使用VS 2010sp1和SQL2012)

  1. 使用VS,创建Windows窗体应用程序
  2. 右键单击该项目,然后选择"添加">"新建项"
  3. 选择"基于服务的数据库"
  4. 取消"数据源配置向导"
  5. 数据库将显示在解决方案资源管理器中的项目下.双击新数据库
  6. 数据库将添加到Server Explorer的数据连接列表中
  7. 在Server Explorer中,打开数据库,右键单击Tables目录,然后选择"Add New Table"
  8. 抛出错误"不支持此服务器版本...."

任何它的价值的屏幕截图.. 在此输入图像描述 在此输入图像描述

我的问题是,有没有解决这个问题?如果是这样,它是什么?

sql-server visual-studio visual-studio-2010-sp1 sql-server-2012 sql-server-2012-express

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

部署项目到目录数据库时SSIS 2012的部署错误

我在将SSIS项目部署到SSIS目录数据库时遇到了一个相当奇怪的错误:

"项目或操作记录不存在,或者您没有被授予查看它们的适当权限."

现在,我是服务器的管理员,以前从未遇到任何麻烦.之后我再次尝试,它运行良好.我检查确保没有其他包同时运行.

我确实在MSDN上发现了这篇最近的帖子,它有相同的错误但尚无解释.

有谁知道这个错误的原因是什么?

sql-server ssis sql-server-2012

11
推荐指数
1
解决办法
980
查看次数

复制SQL Server 2008数据库并重命名

我有一个SQL Server 2008数据库,我想复制并在服务器上创建一个新的数据库(使用不同的名称).我不关心维护数据,可以创建没有数据的新数据库.我要做的是以下内容:

  • 创建旧数据库的新数据库维护结构
  • 设置新数据库的名称
  • 将所有varchar和char数据类型更改为nvarchar和nchar
  • 将所有文本数据类型更改为nvarchar(MAX)

顺便说一句,我还有两个问题不属于我的任务,但我想考虑以下问题:

  • 如何将sql server数据库升级到sql server 2012
  • 我需要在数据库上进行任何准备工作,以确保我可以轻松升级它吗?

sql database sql-server-2008 sql-server-2012

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

SQL Server 2012版本的Microsoft.SqlServer.Types几何UDT是否与SQL Server 2008向后兼容?

如果我在本地安装了SQL Server 2008和SQL Server 2012,我只想亲自尝试一下; 但是我只安装了新版本,并希望保持这种方式.

  • SQL Server 2008附带一个程序集Microsoft.SqlServer.Types.dll,主要版本10.
  • SQL Server 2012附带了一个程序集Microsoft.SqlServer.Types.dll,主要版本为11.

除其他外,两个程序集都暴露了一种SqlGeometryBuilder类型.两个程序集版本之间的一个显着区别是2012类型有一个额外的重载方法AddCircularArc,而2008类型没有.

因为并行引用这两个程序集并不是一件容易的事(也许是一个坏主意),我想知道我是否可以使用2012版本 - 即使是针对SQL Server 2008实例,只要我不使用它AddCircularArc.

任何人都可以分享他们的经验吗?

spatial backwards-compatibility sql-server-2008 sql-server-2012 sqlgeometry

11
推荐指数
2
解决办法
8696
查看次数

在SQL Server 2012中使用带有Fulltext的OFFSET/FETCH时性能下降

我正在尝试编写一个数据库大小的查询结果分页.正如SQL Server 2012所提供的OFFSET/FETCH,我正在使用它.但是在我将语句添加到查询后,需要花费10倍的时间.

查询:

SELECT 
    p.ShopId, 
    count(1) as ProductsQuantity, 
    MIN(LastPrice) as MinPrice, 
    MAX(LastPrice) as MaxPrice
FROM Product2 p WITH (NOLOCK)
INNER JOIN
   CONTAINSTABLE(Product2, ProductName, 'czarny') AS KEY_TBL
ON KEY_TBL.[key]=p.Id
WHERE 
    (p.LastStatus > 0 OR p.LastStatus = -1) 
GROUP BY p.ShopId
ORDER BY p.ShopId asc



SELECT 
    p.ShopId, 
    count(1) as ProductsQuantity, 
    MIN(LastPrice) as MinPrice, 
    MAX(LastPrice) as MaxPrice
FROM Product2 p WITH (NOLOCK)
INNER JOIN
   CONTAINSTABLE(Product2, ProductName, 'czarny') AS KEY_TBL
ON KEY_TBL.[key]=p.Id
WHERE 
    (p.LastStatus > 0 OR p.LastStatus = -1)   
GROUP …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server full-text-search sql-server-2012

11
推荐指数
1
解决办法
3214
查看次数

目前,我的所有SQL请求显示"System.ComponentModel.Win32Exception:等待操作超时"

突然,所有sql server请求显示"System.ComponentModel.Win32Exception:等待操作超时".找到问题的最快方法是什么?

Stack Trace: 


[Win32Exception (0x80004005): The wait operation timed out]

[SqlException (0x80131904): Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.]
   System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +1767866
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +5352418
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +244
   System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +1691
   System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() +61
   System.Data.SqlClient.SqlDataReader.get_MetaData() +90
   System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +365
   System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2012

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

将表变量传递给SQL Server存储过程

我正在尝试将表变量传递给存储过程,我得到错误:

操作数类型冲突:表与TY_MyType不兼容

以下是相关的代码:

1 - 类型定义

CREATE TYPE [dbo].[TY_MyType] AS TABLE(
        [Sampling_ID]               [int]           NULL,
        [Parameter_Name]            [nvarchar](32)  NULL,
        [Measuring_Method_Code]     [int]           NULL,
        [Greater_or_Smaller]        [varchar](1)    NULL,
        [Parameter_Value]           [float]         NULL,
        [Measured_By]               [int]           NULL,
        [No_Measurement_Code]       [int]           NULL,
        [No_Measurement_Comments]   [varchar](512)  NULL,
        [Update_Reason_Code]        [int]           NULL,
        [General_Comment]           [varchar](512)  NULL
) ;
Run Code Online (Sandbox Code Playgroud)

2 - 在调用过程中声明的本地表变量(有一个INSERT,在将数据传递给另一个过程之前将数据注入此本地表变量)

DECLARE @_l_Tempo_Table TABLE ( Sampling_ID             INT             ,
                                Parameter_Name          NVARCHAR(32)    ,
                                Measuring_Method_Code   INT             ,
                                Greater_or_Smaller      VARCHAR(1)      ,
                                Parameter_Value         FLOAT           ,
                                Measured_By             INT             ,
                                No_Measurement_Code     INT             ,
                                No_Measurement_Comments VARCHAR(512)    ,
                                Update_Reason_Code      INT             ,
                                General_Comment         VARCHAR(512) …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012

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

SQL Server 2012中的STRING_SPLIT

我有这个参数

@ID varchar = ‘1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20’ 
Run Code Online (Sandbox Code Playgroud)

我想做一些事情来分割逗号分隔值.

该string_split功能不起作用,我收到此错误:

STRING_SPLIT功能仅在兼容级别130下可用

我尝试更改我的数据库并将兼容性设置为130,但我没有此更改的权限.

sql split sql-server-2012

11
推荐指数
3
解决办法
3万
查看次数