在最近重新启动我们的开发服务器期间,SQL Server开始使用.NET 4.0SQLCLR.这意味着在SQL中没有使用CLR,或者至少通过阅读这些来源是我的理解:
http://software.intel.com/en-us/blogs/2009/10/16/sql-server-2008-sqlclr-net-framework-version/
www.sqlskills.com/BLOGS/BOBB/post/On-SQL-Server-and-NET-40.aspx
我们得到的只是这种类型的错误消息:
消息6517,级别16,状态1,行1无法创建AppDomain"xxx.dbo [ddl] .3".方法的类型签名不是Interop兼容的.
运行声明(由@ john-christensen建议)
select * from sys.dm_clr_properties
Run Code Online (Sandbox Code Playgroud)
得到以下信息:
*Name* *Value*
directory C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
version v4.0.30319
state CLR is initialized
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个或如何强制SQL Server CLR使用早期版本的框架?
对于针对SQL Server 2008 R2运行的实体框架(4.2)生成的简单SQL查询,我遇到了一些主要的性能问题.在某些情况下(但不是全部),EF使用以下语法:
exec sp_executesql 'DYNAMIC-SQL-QUERY-HERE', @param1...
Run Code Online (Sandbox Code Playgroud)
在其他情况下,只需执行原始SQL,并将提供的参数烘焙到查询中.我遇到的问题是使用sp_executesql执行的查询忽略了目标表上的所有索引,导致执行查询极差(通过检查SSMS中的执行计划来确认).
经过一些研究,听起来这个问题可能是由"参数嗅探"造成的.如果我附加OPTION(RECOMPILE)查询提示,如下所示:
exec sp_executesql 'DYNAMIC-SQL-QUERY-HERE OPTION(RECOMPILE)', @param1...
Run Code Online (Sandbox Code Playgroud)
使用目标表上的索引,并且查询执行速度非常快.我还尝试在数据库实例(http://support.microsoft.com/kb/980653)上切换用于禁用参数嗅探(4136)的跟踪标志,但是这似乎没有任何效果.
这给我留下了一些问题:
附加信息:
我还要提一下,如果我通过服务管理控制台重新启动SQL Server服务,在使用下面的脚本启用跟踪标志4136后,实际上似乎清除了跟踪标志...也许我应该以不同的方式这样做......
DBCC TRACEON(4136,-1)
Run Code Online (Sandbox Code Playgroud) entity-framework parameter-sniffing sql-server-2008-r2 sp-executesql
*底部描述了环境的详细信息.
我正在尝试为报告服务构建身份验证解决方案.
应使用我们现有的costumer数据库对在线客户进行身份验证,而本地管理用户可以使用简单的基本身份验证.
我已经SSRS使用codeplex示例进行了安全扩展,我用来发出基本挑战的方法如下
public void GetUserInfo(out IIdentity userIdentity, out IntPtr userId)
{
if (HttpContext.Current != null && HttpContext.Current.User != null)
userIdentity = HttpContext.Current.User.Identity;
else
{
HttpContext.Current.Response
.AddHeader("WWW-Authenticate", "Basic realm=\"ReportServer\"");
HttpContext.Current.Response.Status = "401 Unauthorized";
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.Close();
userIdentity = new GenericIdentity("not authorized");
}
userId = IntPtr.Zero;
}
Run Code Online (Sandbox Code Playgroud)
这样,当没有通过该LogonUser方法的用户(即直接URL访问,出价报告部署,而不是常规用户应用程序)受到基本登录/密码弹出窗口的挑战时.为了支持这一点,我制作了如下的httpmodule
void IHttpModule.Init(HttpApplication context)
{
context.AuthenticateRequest += CustomAuthenticateRequest;
}
void CustomAuthenticateRequest(object sender, EventArgs e)
{
var app = sender as HttpApplication;
if (app == null) return;
var basicAuth = app.Context.Request.Headers["Authorization"]; …Run Code Online (Sandbox Code Playgroud) 最近我在数据库中找到了几个没有定义聚簇索引的表.但是定义了非聚集索引,因此它们处于HEAP状态.
在分析中,我发现select语句对非聚集索引中定义的列使用过滤器.
这些表上没有聚簇索引会影响性能吗?
sql-server indexing sqlperformance sql-server-2008 sql-server-2008-r2
我正在运行一个插入脚本,该脚本应该从SSMS将13,381行插入到空白数据库中.它告诉我"查询已完成但有错误"并且只插入了13357行.
错误列表中没有显示任何内容.如何找到脚本中的错误?
谢谢!
我正在研究SQL Server 2008 R2实例.我刚刚更改了存储过程的代码.当我尝试调试该proc时,SSMS调试窗口显示旧版本的代码.
我该怎么做才能强制SSMS呈现当前版本的代码?
提前致谢.
我想搜索XML值列以查看是否包含字符串.我不知道架构,我想知道字符串是否包含在任何地方.我不知道XPATH是否适用于这种情况.
相当于
Select s.Name, ts.ValueXML from table t (nolock)
join table2 ts (nolock) on t.key_Id = ts.key_Id
join table3 s (nolock) on ts.key_Id=s.key_Id
where s.Name like '%Lab%' and ts.ValueXML like '%PreviewDateRange%'
Run Code Online (Sandbox Code Playgroud)
错误:参数数据类型xml对于类似函数的参数1无效.
相关ts表格栏目
ValueXml (XML(.), null)
我正在搜索的项目应该是一个属性.因此,如果上述情况不可能,则包含该属性的任何内容都将是一个不错的选择.
我正在使用SQL Server 2008空间数据类型.我有一个表所有状态(作为多边形)作为数据类型GEOMETRY.现在我想检查作为数据类型GEOGRAPHY的点的坐标(纬度,经度)是否在该状态内.
我找不到使用新空间数据类型的任何示例.目前,我有一个多年前实施的解决方法,但它有一些缺点.
我有SQL Server 2008和2012.如果新版本有一些增强功能,我也可以开始使用它.
谢谢.
更新1:
我正在添加一个代码示例,以便更清晰.
declare @s geometry --GeomCol is of this type too.
declare @z geography --GeogCol is of this type too.
select @s = GeomCol
from AllStates
where STATE_ABBR = 'NY'
select @z = GeogCol
from AllZipCodes
where ZipCode = 10101
Run Code Online (Sandbox Code Playgroud) sql-server spatial geospatial sql-server-2008 sql-server-2008-r2
这是相关代码:
function connect(){
// DB credentials and info defined here....
$connection = odbc_connect("DRIVER={SQL Server Native Client 11.0}; Server=$server; Database=$db;", $loginname, $loginpass);
return $connection;
}
function odbc_fetch_results($stmt, &$results) {
$numrows = odbc_num_rows($stmt);
$row = odbc_fetch_array($stmt);
print_r($row); // Prints: Array ( [MEASUREMENT_UNI] => kg)
if($row){
$results = array ($row);
while( $row = odbc_fetch_array($stmt)){
array_push($results, $row);
}
}
return $numrows;
}
$sql = "select * from measurements where ID=$id";
$stmt = executeSQL($conn,$sql);
$nrows = odbc_fetch_results($stmt, $results);
odbc_free_result($stmt);
print_r($result[0]); // Prints: Array ( [0] …Run Code Online (Sandbox Code Playgroud) 我有下表有两个字段,即a和b,如下所示:
create table employe
(
empID varchar(10),
department varchar(10)
);
Run Code Online (Sandbox Code Playgroud)
插入一些记录:
insert into employe values('A101','Z'),('A101','X'),('A101','Y'),('A102','Z'),('A102','X'),
('A103','Z'),('A103','Y'),('A104','X'),('A104','Y'),('A105','Z'),('A106','X');
select * from employe;
Run Code Online (Sandbox Code Playgroud)
empID department
------------------
A101 Z
A101 X
A101 Y
A102 Z
A102 X
A103 Z
A103 Y
A104 X
A104 Y
A105 Z
A106 X
Run Code Online (Sandbox Code Playgroud)
注意:现在我想显示仅属于该部门Z且仅属于该部门的员工Y.因此,根据条件,A103应该显示唯一的员工,因为他只属于部门Z和Y.但员工A101不应该出现,因为他属于Z,X, and Y.
预期成果:
如果条件是:Z和Y则结果应该是:
empID
------
A103
Run Code Online (Sandbox Code Playgroud)
如果条件是:Z和X则结果应该是:
empID
------ …Run Code Online (Sandbox Code Playgroud) sql-server ×7
sql ×3
.net ×1
debugging ×1
geospatial ×1
indexing ×1
odbc ×1
php ×1
postgresql ×1
spatial ×1
sqlclr ×1
ssrs-2008 ×1
xml ×1
xpath ×1