Rob*_*Rob 0 sql sql-server ssms sql-server-2008
我在SQL Server 2008上有一个相当大的表(20多列).我正在使用Microsofts SQL Server Management Studio打开表设计视图并添加一列.添加列后,我将其在列排序中向上移动.
下面的图像显示了我添加的列以及我试图将其移动到的位置,只需将其拖动几个位置即可.

在我完成这项工作之后,当我试图打开网站时,我会遇到异常.当我添加列而不在列排序中移动它时,一切正常.
有人可以帮我解决这个问题.这是MSSQL服务器,管理工作室中的错误还是其他出错的地方?
例外
Operand type clash: bit is incompatible with uniqueidentifier
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
[SqlException (0x80131904): Operand type clash: bit is incompatible with uniqueidentifier]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +404
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() +412
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1363
System.Data.SqlClient.SqlDataReader.HasMoreRows() +301
System.Data.SqlClient.SqlDataReader.ReadInternal(Boolean setTimeout) +422
NHibernate.Driver.NHybridDataReader.Read() +28
NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) +1383
NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) +114
NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) +195
[ADOException: could not execute query
[ SELECT * from SomeFunction(@p0,@p1) ]
Name:Id - Value:3429fb7e-dba3-4c74-b41b-6f2e0bbb33f8 Name:Moment - Value:7-1-2011 12:16:45
[SQL: SELECT * from SomeFunction(@p0,@p1)]]
NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) +637
NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters) +23
NHibernate.Impl.SessionImpl.ListCustomQuery(ICustomQuery customQuery, QueryParameters queryParameters, IList results) +438
NHibernate.Impl.SessionImpl.List(NativeSQLQuerySpecification spec, QueryParameters queryParameters, IList results) +373
NHibernate.Impl.SessionImpl.List(NativeSQLQuerySpecification spec, QueryParameters queryParameters) +340
NHibernate.Impl.SqlQueryImpl.List() +258
CMS.ResourceAccess.DataAccessLogic.Repositories.NodeRepository.GetAncestors(Guid nodeId) in C:\Projects\Website\DataAccessLogic\Repositories\Repository.cs:228
CMS.Business.Components.Services.NodeService.GetAncestors(Guid nodeId) in C:\Projects\Website\DataAccessLogic\Repositories\Service.cs:921
CMS.Business.Components.Services.NodeService.GetSiteByNodeId(Guid nodeId) in C:\Projects\Website\DataAccessLogic\Repositories\Service.cs:1280
Plugin.Wysiwyg.Business.Components.Services.WysiwygSearchService.RebuildIndex() +1232
CMS.Business.Components.Services.SearchService.RebuildIndexForSites(IEnumerable 1 sites, ConfigurationManager configurationManager) in C:\Projects\Website\Services\Service.cs:303
CMS.Business.Components.Services.SearchService.RebuildIndex() in C:\Projects\Website\DataAccessLogic\Repositories\Service.cs:252
CMS.Backend.MvcApplication.Application_Start() in C:\Projects\Website\Global.asax.cs:49
[HttpException (0x80004005): could not execute query
[ SELECT * from SomeFunction(@p0,@p1) ]
Name:Id - Value:3429fb7e-dba3-4c74-b41b-6f2e0bbb33f8 Name:Moment - Value:7-1-2011 12:16:45
[SQL: SELECT * from SomeFunction(@p0,@p1)]]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +3988565
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +191
System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +325
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +407
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +375
[HttpException (0x80004005): could not execute query
[ SELECT * from SomeFunction(@p0,@p1) ]
Name:Id - Value:3429fb7e-dba3-4c74-b41b-6f2e0bbb33f8 Name:Moment - Value:7-1-2011 12:16:45
[SQL: SELECT * from SomeFunction(@p0,@p1)]]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11529072
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +141
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4784373
Run Code Online (Sandbox Code Playgroud)
编辑:我使用NHibernate作为ORM
通过我的计算,有一个SELECT*潜伏在你的SQL代码中的某个地方(可能在函数或它所依赖的视图中).这只是SELECT*危险的众多原因之一.这是一个类似的例子,演示一个这样的失败模式:
create table dbo.T (
ID int not null,
FilterID uniqueidentifier not null,
Val1 varchar(10) not null
)
go
insert into dbo.T (ID,FilterID,Val1)
select 1,'00000000-0000-0000-0000-000000000000','abc'
go
create view dbo.V
as
select * from dbo.T
go
create function dbo.F ()
returns table
as
return (select ID,Val1 from dbo.V where FilterID='00000000-0000-0000-0000-000000000000')
go
select * from dbo.F()
go
Run Code Online (Sandbox Code Playgroud)
以上返回单个结果行,如预期的那样.现在我们以与SSMS在幕后相同的方式执行更改:
create table dbo.Temp_T (
ID int not null,
Flag bit null,
FilterID uniqueidentifier not null,
Val1 varchar(10) not null
)
go
insert into dbo.Temp_T (ID,FilterID,Val1)
select ID,FilterID,Val1 from dbo.T
go
drop table dbo.T
go
sp_rename 'dbo.Temp_T','T'
go
Run Code Online (Sandbox Code Playgroud)
现在我们再次查询我们的F函数:
select * from dbo.F()
Run Code Online (Sandbox Code Playgroud)
我们得到:
将varchar值'00000000-0000-0000-0000-000000000000'转换为数据类型位时转换失败.
实际上,如果我将F函数修改为:
create function dbo.F ()
returns table
as
return (select ID,Val1 from dbo.V where FilterID=CONVERT(uniqueidentifier,'00000000-0000-0000-0000-000000000000'))
go
Run Code Online (Sandbox Code Playgroud)
我可以得到:
操作数类型冲突:uniqueidentifier与bit不兼容