“数据类型 ntext 和 nvarchar 在 equal to 运算符中不兼容”的解决办法

在SQL中判断ntext字段是否等于指定值,报错“数据类型 ntext 和 nvarchar 在 equal to 运算符中不兼容”,先上SQL语句报错截图:如以上SQL语句,'123'在数据库中是varchar格式的,和ntext字段是完全不同的,所以无法进行比较。于是就报出了错误“数据类型 ntext 和 nvarchar 在 equal to 运算符中不兼容”,那么如何解决这个问题呢? 1. 在数据结构允许的情况下,直接将数据库中将ntext改成varchar或者nvarchar 2. 在业务逻辑允许的情况下,将等于判断改为LIKE模糊匹配,如:SELECT * FROM tblTest WHERE myContent LIKE '%123%' 3. 修改SQ...


阅读正文

SQL Server变成单个用户后不能访问,设置成多个用户的方法

SQL Server中,数据库列表显示单个用户(如下图),导致无法访问,可运行以下SQL语句,使数据库变为多用户访问USE master; GO DECLARE @SQL VARCHAR(MAX); SET @SQL='' SELECT @SQL=@SQL+'; KILL '+RTRIM(SPID) FROM master..sysprocesses WHERE dbid=DB_ID('数据库名'); EXEC(@SQL); ALTER DATABASE [数据库名] SET MULTI_USER;执行SQL语句后,刷新数据库列表,数据库后面的“(单个用户)”已经消失了


阅读正文

SQL Server无法修改表结构,保存时提示“阻止保存要求重新创建表的更改”的处理办法

1.在SQL Server管理工具中添加、修改、或者删除列,点击保存时提示:不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的表进行了更改或者启用了“阻止保存要求重新创建表的更改”2.处理方法点击菜单栏 工具 > 选项在选项窗口中选中左侧的Designers,在右侧界面中取消勾选“阻止保存要求重新创建表的更改”,保存回到修改表的界面,重新保存表结构即可!


阅读正文

通过SQL语句拼接的方式,生成导入数据的脚本,从源数据库中导出数据

遇到旧网站数据迁移到新网站,往往旧网站的数据结构和新网站不一样,可以在旧网站的数据库中通过查询语句拼接的方式,生成导入数据的脚本1.先查询旧网站中需要导入的数据SELECT * FROM t_custom2.在查询脚本上加工,编写拼接脚本SELECT 'INSERT INTO Whir_Mem_Member (' + 'LoginName, LoginTimeNow, JZOrNot, RealName, Password, OldWebPassword, ' + 'Sex, IDNumber, MedicalCard, MedicalOtherCard, AccountState, Mobile, Email,' + 'UpdateDate, UpdateUser, CreateDate, CreateUser,' ...


阅读正文

查询数据库中每一张表的记录数

SELECT CAST(NULL AS sysname) AS 表名称, 1 AS 记录数 INTO #table WHERE 1 = 0 DECLARE @TableName sysname DECLARE testcur CURSOR FOR SELECT [name] FROM sysobjects WHERE xtype ='U' ORDER BY [name] OPEN testcur FETCH NEXT FROM testcur INTO @TableName WHILE @@fetch_status = 0 BEGIN EXEC('INSERT INTO #table SELECT ''' + @TableName + ''', (SELECT COUNT(1) FROM ' + @TableName + ')') FETCH NEXT FROM testcur INTO @TableName END CLOSE t...


阅读正文

查询服务器上所有数据库的最后更新时间

我们可以通过以下语句查询单个数据库中所有表的创建日期、最后更新日期:select * from sys.tables同时也可以通过以下语句查询服务器上所有在线的数据库:select * from sys.databases where state_desc='online'依此,我们可以根据该数据库中所有表的最大modify_date为准,建立一个临时表#table,记录下每一个数据库的库名和最后更新时间,脚本代码如下:--创建临时表 if OBJECT_ID('tempdb..#table') is not null drop table #table create table #table ( dbName varchar(50), modifyDate datetime ) declare...


阅读正文

用SQL脚本创建数据库登录用户,并授权用户访问指定的数据库

CREATE LOGIN [登录用户名] WITH PASSWORD = '登录密码', DEFAULT_DATABASE = [该用户默认可访问的数据库], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF --使用户登录后,不列出没有权限的数据库(没有设置过权限的数据库将不会出现,请谨慎运行) DENY VIEW any DATABASE TO PUBLIC; ALTER AUTHORIZATION ON DATABASE::[数据库名] TO [登录用户名]


阅读正文

数据库中分组拼接查询语句(另附相同效果的LINQ语句)

在项目的种种需求中,我们偶尔会遇到以下场景:有如下一张表,记录了起点站、终点站、发车时间:现需要将此表格中的数据查询出来,以如下形式在页面中展现,以起点站和终点站分组,显示当天发车的时间表:按傻瓜式的做法,我们通常会将表中的数据原样查询出来,然后在.net代码中遍历查询结果,另外构建一个DataTable或者集合进行数据变形。这种做法在编码时的确省心省力,但若查询数据量较大,代码的执行效率就不高了。这里推荐使用FOR XML PATH的语句进行查询,贴上代码:SELECT StartStation, TerminalStation, StartTimeList= STUFF(( ...


阅读正文