|   某单位新N中G大,于2016年底,升级, 18年4月底,发现16年结账问题,会计操作了一下,结果2017年年度帐套打不开了,这两年数据没有备份,或者有也删除了,另外数据库涉及两个模块,都没有备份。
 怎么处理也不好。结账重建,导入数据库表,不行。
 1、修复账务系统,
 年结->初始化->导入通信录->导入全年凭证->依次结账->年结->备份2017帐套
 2、sqlserver 服务器主体 ’ng’无法在当前安全上下文下访问数据库user012017
 sqlserver 服务器主体 无法在当前安全上下文下访问数据库。
 在网上找了一下资料,发现是因为trustworthy数据库属性用于指明 SQL Server 实例是否信任该数据库以及其中的内容。默认情况下,此设置为 OFF,但是可以使用 ALTER DATABASE 语句将其设置为 ON。
 查看哪些数据库开了trustworthy属性,命令如下:
 SELECT name, database_id, is_trustworthy_on FROM sys.databases,默认就msdb开的有。
 要打开数据库trustworthy属性,命令如下: 
 
 ALTER DATABASE user012017 SET TRUSTWORTHY ON
 授权用户访问,命令如下:
 ALTER AUTHORIZATION ON DATABASE::user012017 TO [ng]
 操作结束后发现,软件可以对数据库进行访问,库存系统登录已经正常,
 但是账务系统要初始化,恢复修复好的帐套数据即可。
   以下半角的双引号,要改为半角的单引号,才能用;[因为网站后台原因造成对单引号的转换错误]DECLARE @value  VARCHAR(1024)
 set @value=“需要查找的字符串“
 SET NOCOUNT ON
 DECLARE @sql VARCHAR(1024)
 DECLARE @table VARCHAR(64)
 DECLARE @column VARCHAR(64)
 CREATE TABLE #t
 (
     tablename VARCHAR(64),
     columnname VARCHAR(64)
 )
 DECLARE TABLES CURSOR FOR
 SELECT o.name, c.name
 FROM syscolumns c INNER JOIN sysobjects o ON c.id = o.id
 WHERE o.type = “U“ AND c.xtype IN (167, 175, 231, 239)
 ORDER BY o.name, c.name
 OPEN TABLES
 FETCH NEXT FROM TABLES 
 INTO @table, @column
 WHILE @@FETCH_STATUS = 0
 BEGIN
     SET @sql = “IF EXISTS ( SELECT NULL FROM [“ + @table + “] “
     SET @sql = @sql + “WHERE RTRIM(LTRIM([“ + @column + “])) LIKE ““%“ + @value + “%““) “
     SET @sql = @sql + “INSERT INTO #t VALUES (“““ + @table + “““, “““
     SET @sql = @sql + @column + “““)“
     EXEC(@sql)
     FETCH NEXT FROM TABLES 
 INTO @table, @column
 END
 CLOSE TABLES
 DEALLOCATE TABLES
 SELECT *
 FROM #t
 DROP TABLE #t 
 |