Questions tagged «sql-server»

Microsoft SQL Server是一个关系数据库管理系统(RDBMS)。将此标签用于所有SQL Server版本,包括Compact,Express,Azure,Fast-track,APS(以前称为PDW)和Azure SQL DW。请勿将此标签用于其他类型的DBMS(MySQL,PostgreSQL,Oracle等)。除非该标签与数据库直接相关,否则请勿将其用于软件和移动开发问题。

2
对UPDLOCK,HOLDLOCK感到困惑
在研究表提示的使用时,我遇到了两个问题: 我应该使用哪些锁定提示(T-SQL)? HOLDLOCK对UPDLOCK有什么影响? 对这两个问题的回答都表明,使用时(UPDLOCK, HOLDLOCK),其他进程将无法读取该表上的数据,但是我没有看到这一点。为了进行测试,我创建了一个表并启动了两个SSMS窗口。在第一个窗口中,我运行了一个使用各种表提示从表中选择的事务。在事务运行时,我从第二个窗口运行了各种语句,以查看哪些将被阻止。 测试表: CREATE TABLE [dbo].[Test]( [ID] [int] IDENTITY(1,1) NOT NULL, [Value] [nvarchar](50) NULL, CONSTRAINT [PK_Test] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] 从SSMS窗口1: BEGIN TRANSACTION SELECT …


6
有没有一种方法可以使用普通ADO从SQL Server检索视图定义?
我正在使用ADO ConnectionOpenSchema()调用的各种形式成功地从SQL服务器上托管的数据库中提取列定义,因此我可以以编程方式在另一个SQL数据库中重新创建这些表。到现在为止还挺好。 与上述表格的主要交互是通过多个视图进行的。尽管OpenSchema()能够以与返回表的列定义相同的方式返回视图的列定义,但是缺少了关键的信息-视图中的列映射到基础表中的哪个表和列。 我尝试访问用于使用ADOX目录视图创建视图的SQL命令,但似乎我们正在使用的SQL Server的OLEDB驱动程序不支持此功能。 是否有任何方法可以通过ADO获得有关视图配置的此信息,即声明“ ColumnX映射到表Z中的ColumnY”还是采用用于创建视图的实际SQL命令的形式?
89 sql-server  view  ado 


7
T-SQL:遍历一组已知值
这是我的情况: 假设我有一个存储过程,在该存储过程中,我需要在一组特定ID上调用另一个存储过程。有没有办法做到这一点? 即而不是需要这样做: exec p_MyInnerProcedure 4 exec p_MyInnerProcedure 7 exec p_MyInnerProcedure 12 exec p_MyInnerProcedure 22 exec p_MyInnerProcedure 19 做这样的事情: *magic where I specify my list contains 4,7,12,22,19* DECLARE my_cursor CURSOR FAST_FORWARD FOR *magic select* OPEN my_cursor FETCH NEXT FROM my_cursor INTO @MyId WHILE @@FETCH_STATUS = 0 BEGIN exec p_MyInnerProcedure @MyId …
89 sql  sql-server  tsql 

17
无法删除数据库,因为它正在使用中
我想删除一个数据库。我使用了以下代码,但无济于事。 public void DropDataBase(string DBName,SqlConnection scon) { try { SqlConnection.ClearAllPools(); SqlCommand cmd = new SqlCommand("ALTER DATABASE " + DBName + " SET SINGLE_USER WITH ROLLBACK IMMEDIATE", scon); cmd.CommandType = CommandType.Text; scon.Open(); cmd.ExecuteNonQuery(); scon.Close(); SqlCommand cmddrpdb = new SqlCommand("drop database " + DBName + "", scon); cmddrpdb.CommandType = CommandType.Text; scon.Open(); cmddrpdb.ExecuteNonQuery(); …
89 c#  asp.net  sql-server 

6
共享主机中的“由于'LOG_BACKUP',数据库的事务日志已满”
我在共享托管计划中有一个使用EntityFramework codefirst方法的Asp.Net MVC 5网站。它使用开源WebbsitePanel作为控制面板,并且它的SQL Server面板有所限制。今天,当我想编辑数据库时,遇到了此错误: The transaction log for database 'db_name' is full due to 'LOG_BACKUP' 我周围中搜索,发现有很多类似的相关答案的这个和这个或这个,但问题是,他们建议运行在数据库上查询。我尝试跑步 db.Database.ExecuteSqlCommand("ALTER DATABASE db_name SET RECOVERY SIMPLE;"); 与视觉工作室(在上HomeController),但出现以下错误: System.Data.SqlClient.SqlException: ALTER DATABASE statement not allowed within multi-statement transaction. 我该如何解决我的问题?我应该联系支持团队(这对我的房东来说有点差)或我自己解决这个问题?

30
目标主体名称不正确。无法生成SSPI上下文
我正在努力获得从机器A到运行SQL Server的机器B的SQL Server连接。 我已经在Google上进行了广泛的搜索,发现的所有内容均无效。他们也不会带领您逐步解决此问题。 我们没有使用Kerberos,而是使用了NTLM。 涉及的机器是(出于安全目的,xx用于掩盖某些机器名称): xxPRODSVR001 -Windows Server 2012域控制器 xxDEVSVR003 -Windows Server 2012(此机器生成错误) xxDEVSVR002 -Windows Server 2012(此计算机运行SQL Server 2012) 在DC(xxPRODSVR001)上注册了以下SPN。为了安全起见,我用yyy遮盖了该域: CN = xxDEVSVR002,CN = Computers,DC = yyy,DC = local的已注册ServicePrincipalName: MSSQLSvc/xxDEVSVR002.yyy.local:49298 MSSQLSvc/xxDEVSVR002.yyy.local:TFS RestrictedKrbHost/xxDEVSVR002 RestrictedKrbHost/xxDEVSVR002.yyy.local Hyper-V Replica Service/xxDEVSVR002 Hyper-V Replica Service/xxDEVSVR002.yyy.local Microsoft Virtual System Migration Service/xxDEVSVR002 Microsoft Virtual System Migration Service/xxDEVSVR002.yyy.local …
89 sql-server  tfs  kerberos  sspi  spn 

6
使用Exists 1或Exists存在的子查询*
我曾经这样写过EXISTS检查: IF EXISTS (SELECT * FROM TABLE WHERE Columns=@Filters) BEGIN UPDATE TABLE SET ColumnsX=ValuesX WHERE Where Columns=@Filters END 前世的一位DBA告诉我,当我做一个EXISTS子句时,请使用SELECT 1而不是SELECT * IF EXISTS (SELECT 1 FROM TABLE WHERE Columns=@Filters) BEGIN UPDATE TABLE SET ColumnsX=ValuesX WHERE Columns=@Filters END 这真的有区别吗?
88 sql  sql-server  tsql 

12
函数与存储过程
假设我必须实现一段T-SQL代码,该代码必须返回一个表作为结果。我可以实现一个表值函数或一个返回一组行的存储过程。我应该使用什么? 简而言之,我想知道的是: 函数和存储过程之间的主要区别是什么?使用其中一种时,我必须考虑哪些因素?

2
varchar(max)变量的最大大小
在过去的任何时候,如果有人问我a的最大大小varchar(max),我都会说2GB,或者查找更准确的数字(2 ^ 31-1或2147483647)。 但是,在最近的一些测试中,我发现varchar(max)变量显然可以超过此大小: create table T ( Val1 varchar(max) not null ) go declare @KMsg varchar(max) = REPLICATE('a',1024); declare @MMsg varchar(max) = REPLICATE(@KMsg,1024); declare @GMsg varchar(max) = REPLICATE(@MMsg,1024); declare @GGMMsg varchar(max) = @GMsg + @GMsg + @MMsg; select LEN(@GGMMsg) insert into T(Val1) select @GGMMsg select LEN(Val1) from T 结果: …
88 sql-server  tsql 

6
计算两点之间的距离(纬度,经度)
我正在尝试计算地图上两个位置之间的距离。我已在数据中存储:经度,纬度,X POS,Y POS。 我以前一直在使用以下代码段。 DECLARE @orig_lat DECIMAL DECLARE @orig_lng DECIMAL SET @orig_lat=53.381538 set @orig_lng=-1.463526 SELECT *, 3956 * 2 * ASIN( SQRT( POWER(SIN((@orig_lat - abs(dest.Latitude)) * pi()/180 / 2), 2) + COS(@orig_lng * pi()/180 ) * COS(abs(dest.Latitude) * pi()/180) * POWER(SIN((@orig_lng - dest.Longitude) * pi()/180 / 2), 2) )) AS …




By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.