某单位新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  |