数据库表的基本属性,你知道吗?

Azure数据库服务比较:SQL Database vs Cosmos DB 结构化数据场景:如订单管理、用户认证等需要强事务支持的业务非结构化/半结构化场景:如物联网设备日志、社交网络数据、实时推荐系统:基于传统关系型数据库(SQL Server)的云原生服务,支持ACID事务和复杂SQL查询Cosmos DB:全球分布式NoSQL数据库,支持多模型(文档、键值、图、宽列)和弹性扩展两者的架构设计哲学有何本质区别?数据建模和查询语言的差异如何影响开发体验?一致性、可用性、吞吐量的权衡模型如何选择?典型业务场景下的选型决策依据是什么?技术原理对比。 阅读详情

 

用SQL Doc生成数据库字典文档的时候,突然发现有字段描叙(Description)这项内容,以前一直没有注意过,故特意研究了一下,结果越挖越深,就写了这篇文章。
以前在做数据库脚本开发时,新建表时,对各个字段的描叙要么是记录在文档里面,要么自己建一个表,来保存这些内容,以便日后开发、维护的方便。其实这些信息完全可以放在数据库自己的系统视图里面。
对字段的说明、描述一般都放在系统视图sys.extended_properties中,例如(表dbo.Employee的字段Department的说明)
 

 

其中 当class =1时,major_id它的值是dbo.Employee的id,minor_id是Department的id(详细信息参见MSDN),如下图所示

 

SELECT   OBJECT_ID (N ' dbo.Employee ' )

SELECT   column_id  FROM     sys.columns
WHERE     object_id   =   OBJECT_ID ( ' dbo.Employee ' )
         AND  name  =   ' Department '

 

 

其实在MSSMS 管理器中,选中要添加字段说明的表,单击右键——》修改(08是设计),如下图所示,增加后,保存。就会在sys.extended_properties里添加相应的记录。

 

当然你也可以用脚本命令添加数据库表的字段说明
EXEC  sp_addextendedproperty N ' MS_Description ' , N ' 雇员名称 ' ,  ' SCHEMA ' , N ' dbo ' ,  ' TABLE ' , N ' Employee ' ,  ' COLUMN ' , N ' EmployeeName '

 

 

如果已经存在刚才记录,你再执行上面这段脚本,就会提示:

消息  15233 ,级别  16 ,状态  1 ,过程 sp_addextendedproperty,第  38  行
无法添加属性。 ' dbo.Employee.EmployeeName '  已存在属性  ' MS_Description ' 。

 

下面看看工具生成的文档,工具生成这些信息肯定是数据库里存有对象的这些信息,下面我们来看看这些信息都是从何而来吧

 这里先列举一些保存表信息的系统表、视图吧,可能有些遗漏了,实在太多了,要仔细把这些全部列举出来还得花费一番功夫

代码
SELECT   *   FROM  sys.columns

-- 为每个表和视图中的每列返回一行,并为数据库中的存储过程的每个参数返回一行。
SELECT   *   FROM  syscolumns

-- 每个表对象的信息
SELECT   *   FROM  sys.tables

SELECT   *   FROM  sysobjects

-- 在数据库中创建的每个用户定义的架构范围内的对象的信息
SELECT   *   FROM  sys.objects

-- 数据库实例中的每个数据库的信息
SELECT   *   FROM  sys.databases

-- 系统数据类型
SELECT   *   FROM  sys.types

-- 含数据库中每个视图、规则、默认值、触发器、CHECK 约束、DEFAULT 约束和存储过程的项
SELECT   *   FROM  dbo.syscomments

-- 保存表的自增列信息
SELECT   *   FROM  sys.identity_columns

 

 

下面来看看属性那栏的信息保存在那些表里面。如果表是数据库的默认排序规则,就可以用下面脚本。
代码
SELECT   create_date  AS Created ,
        modify_date  AS Last Modified,
        (  SELECT     collation_name
           FROM       sys.databases
           WHERE      name  =   ' MyAssistant '
        )  AS  collation_name
FROM     SYS.tables
WHERE    NAME  =   ' Employee '

 

如果用某个列的排序规则可用下面的脚本
代码
SELECT   create_date   AS  Created,
        modify_date   AS  Last Modified,
        (  SELECT   DISTINCT
                    collation
           FROM       syscolumns
           WHERE      id  =   OBJECT_ID (N ' dbo.Employee ' )
                     AND  collation  IS   NOT   NULL
                     AND  name  = ' EmployeeName '
        )  AS  collation_name
FROM     sys.tables
WHERE    NAME  =   ' Employee '

 

查看数据库的排序规则可以从  sys.databases查看,而表的某个列的排序规则信息保存在syscolumns里面。上图的Heap, Row Count信息我还不知是从哪里来的。
接下来看看Cloumns信息吧
代码
SELECT  
    C.Name  AS  FieldName,
    T.Name  AS  DataType,
     CASE   WHEN  C.Max_Length  =   - 1   THEN   ' Max '   ELSE   CAST (C.Max_Length  AS   VARCHAR )  END   AS  Max_Length,
     CASE   WHEN  C.is_nullable  =   0   THEN   ' × '    ELSE   ' √ '   END   AS  Is_Nullable,
    C.is_identity,
     ISNULL (M. text ,  '' )   AS   DefaultValue,
     ISNULL (P.value,  '' )  AS  FieldComment
    
FROM  sys.columns  C
INNER   JOIN   sys.types T  ON  C.system_type_id  =  T.user_type_id
LEFT   JOIN  dbo.syscomments M  ON  M.id  =  C.default_object_id
LEFT    JOIN  sys.extended_properties P  ON  P.major_id  =  C. object_id   AND  C.column_id  =  P.minor_id 
WHERE  C. [ object_id ]   =   OBJECT_ID ( ' dbo.Employee ' )
ORDER   BY  C.Column_Id  ASC

 

如图所示,得到结果与文档还是有些区别,我通过该脚本实现与文档一致的时候,怎么也找不到nvarchar(30)的30,这个值的出处,后来才发现它其实就是nvarchar的max_length 的一半。

 

修改脚本如下所示 

代码
SELECT  
    C.Name  AS  FieldName,
     CASE   WHEN  T.Name  = ' nvarchar '   THEN  
              T.name  + ' ( '   +   CAST (C.max_length / 2   AS   VARCHAR )  + ' ) '  
          ELSE  T.name  END   AS  DataType,
     CASE   WHEN  C.Max_Length  =   - 1   THEN   ' Max '   ELSE   CAST (C.Max_Length  AS   VARCHAR )  END   AS  Max_Length,
     CASE   WHEN  C.is_nullable  =   0   THEN   ' × '    ELSE   ' √ '   END   AS  Is_Nullable,
     ISNULL ( CAST (I.seed_value  AS   VARCHAR )  +   ' - '   +   CAST (I.increment_value  AS   VARCHAR ),  '' )  AS  is_identity,
     ISNULL (M. text ,  '' )   AS   DefaultValue,
     ISNULL (P.value,  '' )  AS  FieldComment
    
FROM  sys.columns  C
INNER   JOIN   sys.types T  ON  C.system_type_id  =  T.user_type_id
LEFT    JOIN   dbo.syscomments M  ON  M.id  =  C.default_object_id
LEFT    JOIN   sys.extended_properties P  ON  P.major_id  =  C. object_id   AND  C.column_id  =  P.minor_id 
LEFT    JOIN   sys.identity_columns I  ON  I.column_id =  C.column_id  AND  C. object_id   =  I. object_id
WHERE  C. [ object_id ]   =   OBJECT_ID ( ' dbo.Employee ' )
ORDER   BY  C.Column_Id  ASC

 

 

接下来看看Perssion信息来自何处。 首先我们来看看赋与、收回权限的脚本(我是在sa账号下运行的)

代码
DENY    SELECT   ON   [ dbo ] . [ Employee ]   TO   [ Kerry ]
GO

GO
DENY   DELETE   ON   [ dbo ] . [ Employee ]   TO   [ Kerry ]
GO

REVOKE   DELETE   ON   [ dbo ] . [ Employee ]   TO   [ Kerry ]
GO

REVOKE   SELECT   ON   [ dbo ] . [ Employee ]   TO   [ Kerry ]
GO  

 

那么这些权限信息保存在那个系统表或系统视图中,我查了很多资料,还是没有查到,呵呵,希望有知道的告诉一声。但是可以同过系统函数和系统存储过程得到一些相关的权限设置信息。

1:系统存储过程 sp_table_privileges, 它返回指定的一个或多个表的表权限(如 INSERT、DELETE、UPDATE、SELECT、REFERENCES)的列表,表具体参见(MSDN)。 

2:系统函数 fn_my_permissions 返回有效授予主体对安全对象的权限的列表,表具体参见(MSDN)

EXEC  sp_table_privileges  @table_name   =   ' Employee ' ;

EXEC  sp_table_privileges  @table_name   = ' Employee '  ,  @table_owner   = ' dbo '

 

 

 

SELECT   *  
FROM  fn_my_permissions( ' dbo.Employee ' ,  ' OBJECT ' ) 
ORDER   BY  subentity_name, permission_name ; 

 

 

-- 查看用户Kerry的有效权限
SELECT   *   FROM  fn_my_permissions( ' Kerry ' ,  ' USER ' );

 

再来看看SQL Srcipt,好像没有那个系统表、系统视图保存创建表的脚本(如果有的话,算我孤陋寡闻了),也不能通过SP_HELPTEXT来得到(存储过程可以),在

网上搜索了下大概有SMO 方式和存储过程来实现的,SMO方式我还没来得及验证,存储过程倒是找到一个(本来打算自己尝试下的。呵呵,那这篇文章得耗上好长时间了,等写完了,自己再写个试试),下面的存储过程是我在http://edu.codepub.com/2009/0603/5408.php这里搜索到,也不知道原创作者是谁。

 

代码
If   object_id ( ' up_CreateTable ' )  Is   Not   Null
     Drop   Proc  up_CreateTable
Go
/*  生成建表脚本(V2.0)  OK_008 2009-5-18  */
Create   Proc  up_CreateTable
(
     @objectList   nvarchar ( max ) = null
)
-- With ENCRYPTION
As
/*   参数说明:
    @objectList 对象列表,对象之间使用","隔开
    
    改存储过程生成的建表脚本,包含Column,Constraint,Index
*/
Set  Nocount  On
     Declare   @sql   nvarchar ( max ),
             @objectid   int ,
             @id   int ,
             @Rowcount   int ,
             @ObjectName  sysname,
             @Enter   nvarchar ( 2 ),
             @Tab   nvarchar ( 2 )

     Select       @Enter = Char ( 13 ) + Char ( 10 ),
             @Tab = Char ( 9 )    

     Declare   @Tmp   Table (name sysname)
    
     If   @objectList > ''
     Begin
         Set   @sql = ' Select N ''' + Replace ( @objectList , ' , ' , '''  Union All Select N ''' ) + ''''
         Insert   Into   @Tmp  (name)  Exec ( @sql )

         Set   @sql = null
         Select   @sql = Isnull ( @sql + ' , ' , '' ) + name 
             From   @Tmp   As  a
             Where   Not   Exists ( Select   1   From  sys.objects  Where  type = ' U '   And  name = a.name)

         If   @sql > ''
         Begin
             Set   @sql = ' 发现无效的表名:  ' + @sql
             Raiserror   50001   @sql
             Return ( 1 )
         End
     End

     If   object_id ( ' tempdb..#Objects ' )  Is   Not   Null
         Drop   Table  #Objects
    
     If   object_id ( ' tempdb..#Columns ' )  Is   Not   Null
         Drop   Table  #Columns    
    
     Create   Table  #Objects(id  int   Identity ( 1 , 1 )  Primary   Key , object_id   int ,name sysname)

     
    ; With  t  As  
    (
     Select   Object_id , Convert ( int , 0 )  As  LevelNo,name  As   object_name
             From  sys.objects a 
             Where  Type = ' U '   And  is_ms_shipped = 0   And   Not   Exists ( Select   1   From  sys.foreign_keys  Where  referenced_object_id = a. object_id )
     Union   All
     Select  a.referenced_object_id  As   Object_id ,b.LevelNo + 1   As  LevelNo,c.name  As   object_name
         From  sys.foreign_keys a 
             Inner   Join  t b  On  b. object_id = a.parent_object_id
             Inner   Join  sys.objects c  On  c. object_id = a.referenced_object_id  And  c.is_ms_shipped = 0
    )
     Insert   Into  #Objects( object_id ,name)
         Select  a. object_id , object_name
             From  t a
             Where      Not   Exists ( Select   1   From  t  Where   object_id = a. object_id   And  LevelNo > a.LevelNo)  And
                     Not   Exists ( Select   1   From  sys.extended_properties  Where  major_id = a. object_id   And  minor_id = 0   And  class = 1   And  Name = N ' microsoft_database_tools_support ' )
                     And  ( Exists ( Select   1   From   @Tmp   Where  name = a. object_name )  Or   Not   Exists ( Select   1   From   @Tmp ))
             Group   By   object_id , object_name ,LevelNo
             Order   By  LevelNo  Desc

     Set   @Rowcount = @@Rowcount
     If   @Rowcount = 0
     Begin
         Raiserror   50001  N ' 没有可以生产脚本的表! '
         Return ( 1 )
     End

     -- Column
     Select     a. object_id ,
            a.column_id  As  Seq,
             Cast ( 1   As   tinyint )  As  DefinitionType,
             Quotename (a.name) + Char ( 32 ) +  c.name  +
             Case  
                 When  a.user_type_id  In  ( 231 , 239 )  Then   ' ( ' + Case  a.max_length  When   - 1   Then   ' Max '   Else   Rtrim (a.max_length / 2 )  End   + ' ) '
                 When  a.user_type_id  In  ( 62 , 165 , 167 , 173 , 175 )  Then   ' ( ' + Case  a.max_length  When   - 1   Then   ' Max '   Else   Rtrim (a.max_length)  End + ' ) '
                 When  a.user_type_id  In  ( 106 , 108 )  Then   ' ( ' + Rtrim (a. [ precision ] ) + ' , ' + Rtrim (a.scale) + ' ) '  
                 Else   ''
             End
             +   Char ( 32 ) +
             Case  a.is_rowguidcol  When   1   Then   ' Rowguidcol  '   Else   ''   End   +
             Case  a.is_identity  When   1   Then   ' Identity( ' + Cast (d.seed_value  As   nvarchar ( 10 )) + ' , ' + Cast (d.increment_value  As   nvarchar ( 10 )) + ' )  '   Else   ''   End +  
             Case  a.is_nullable  When   1   Then   ' Null  '   Else   ' Not Null  '   End +
             Isnull ( ' Constraint  ' + Quotename (e.name) + '  Default( ' + e.definition + ' ) ' , '' )  As  definition

             Into  #Columns
         From  sys.columns  As  a
             Inner   Join  #Objects  As  b  On  b. object_id = a. object_id
             Inner   Join  sys.types  As  c  On  c.user_type_id = a.user_type_id
             Left   Outer   Join  sys.identity_columns  As  d  On  d. object_id = a. object_id   And  d.column_id = a.column_id  And  a.is_identity = 1
             Left   Outer   Join  sys.Default_constraints  As  e  On  e. object_id = a.default_object_id  And  e.parent_column_id = a.column_id

         Create   Nonclustered   Index  IX_#Columns_object_id  On  #Columns( object_id   Asc )

         -- Constraint
         Insert   Into  #Columns
    
         Select     a.parent_object_id  As   object_id ,
                Row_number()  Over (Partition  By  a.parent_object_id  Order   By   Case  a.type  When   ' PK '   Then   1   When   ' C '   Then   2   Else   3   End ) As  Seq,
                 2   As  DefinitionType,
                 ' Alter Table  ' + Quotename ( object_name (a.parent_object_id))  + '  Add Constraint  ' + Quotename (a.name) +
                 Case  a.type 
                     When   ' PK '   Then   '  Primary Key  ' + Case   When   Exists ( Select   1   From  sys.indexes  Where   object_id = a.parent_object_id  And  is_primary_key = 1   And  type = 1 )  Then  N ' Clustered  '   Else  N ' Nonclustered  '   End +
                                                 ' ( ' + Stuff (( Select   ' , ' + Quotename (c1.Name) + Case  a1.is_descending_key  When   1   Then   '  Desc '   Else   '  Asc '   End
                                                         From  sys.index_columns  As  a1
                                                             Inner   Join  sys.indexes  As  b1  On  b1. object_id = a1. object_id   And  b1.index_id = a1.index_id  And  b1.is_primary_key = 1
                                                             Inner   Join  sys.columns  As  c1  On  c1. object_id = a1. object_id   And  c1.column_id = a1.column_id
                                                         Where  a1. object_id = a.parent_object_id 
                                                         For  Xml Path( '' )
                                                    ), 1 , 1 , '' ) +
                                                 ' ) '
                     When   ' F '   Then   '  Foreign Key ( ' + Stuff (( Select   ' , ' + Quotename (b1.Name)
                                                         From  sys.foreign_key_columns  As  a1
                                                             Inner   Join  sys.columns  As  b1  On  b1. object_id = a1.parent_object_id  And  b1.column_id = a1.parent_column_id
                                                         Where  a1.constraint_object_id = a. object_id  
                                                         Order   By  a1.constraint_column_id
                                                         For  Xml Path( '' )
                                                    ), 1 , 1 , '' ) +
                                                 ' ) References  ' + ( Select   Quotename ( object_name (referenced_object_id))  From   sys.foreign_keys  Where   object_id = a. object_id ) +
                                                 '  ( '
                                                     + Stuff (( Select   ' , ' + Quotename (b1.Name)
                                                         From  sys.foreign_key_columns  As  a1
                                                             Inner   Join  sys.columns  As  b1  On  b1. object_id = a1.referenced_object_id  And  b1.column_id = a1.referenced_column_id
                                                         Where  a1.constraint_object_id = a. object_id  
                                                         Order   By  a1.constraint_column_id
                                                         For  Xml Path( '' )
                                                    ), 1 , 1 , '' ) +
                                                 ' ) '
                     When   ' UQ '   Then   '  Unique ' + ( Select   Case  a1.type  When   1   Then   '  Clustered '   Else   '  Nonclustered '   End
                                                     From  sys.indexes  As  a1
                                                     Where  a1. object_id = a.parent_object_id 
                                                                 And   Exists ( Select   1   From  sys.key_constraints  Where   object_id = a. object_id   And  parent_object_id = a1. object_id   And  unique_index_id = a1.index_id)
                                               ) +                         
                                                 ' ( ' + Stuff (( Select   ' , ' + Quotename (c1.Name) + Case  a1.is_descending_key  When   1   Then   '  Desc '   Else   '  Asc '   End
                                                         From  sys.index_columns  As  a1
                                                             Inner   Join  sys.indexes  As  b1  On  b1. object_id = a1. object_id   And  b1.index_id = a1.index_id  And  b1.is_unique_constraint = 1
                                                             Inner   Join  sys.columns  As  c1  On  c1. object_id = a1. object_id   And  c1.column_id = a1.column_id
                                                         Where  a1. object_id = a.parent_object_id 
                                                                 And   Exists ( Select   1   From  sys.key_constraints  Where   object_id = a. object_id   And  parent_object_id = a1. object_id   And  unique_index_id = a1.index_id)
                                                         For  Xml Path( '' )
                                                    ), 1 , 1 , '' ) +
                                                 ' ) '
                     When   ' C '   Then   '  Check '   + ( Select  definition  From  sys.check_constraints  Where   object_id = a. object_id )
                     Else   ''
                 End   As  definition

             From  sys.objects  As  a
             Where  a.type  In ( ' PK ' , ' F ' , ' C ' , ' UQ ' )
                     And   Exists ( Select   1    From  #Objects  Where   object_id = a.parent_object_id)

         -- Index
         Insert   Into  #Columns
         Select     a. object_id  ,
                a.index_id  As  Seq,
                 3   As  DefinitionType,
                 ' Create  ' + Case  a.is_unique  When   1   Then   ' Unique  '   Else   ''   End +
                 Case  a.type  When   1   Then   ' Clustered  '   Else   ' Nonclustered  '   End +
                 ' Index  ' + Quotename (a.name) + '  On  ' + Quotename (b.name) +
                                         '  ( ' + Stuff (( Select   ' , ' + Quotename (b1.Name) + Case  a1.is_descending_key  When   1   Then   '  Desc '   Else   '  Asc '   End
                                                         From  sys.index_columns  As  a1
                                                             Inner   Join  sys.columns  As  b1  On  b1. object_id = a1. object_id   And  b1.column_id = a1.column_id
                                                         Where  a1. object_id = a. object_id   And  a.index_id = a1.index_id  And  a1.is_included_column = 0
                                                         For  Xml Path( '' )
                                                    ), 1 , 1 , '' ) +
                                         ' ) ' +
                                         Isnull ( '  Include( ' + Stuff (( Select   ' , ' + Quotename (b1.Name)
                                                         From  sys.index_columns  As  a1
                                                             Inner   Join  sys.columns  As  b1  On  b1. object_id = a1. object_id   And  b1.column_id = a1.column_id
                                                         Where  a1. object_id = a. object_id   And  a.index_id = a1.index_id  And  a1.is_included_column = 1
                                                         For  Xml Path( '' )
                                                    ), 1 , 1 , '' ) +
                                         ' ) ' , '' )
                     As  definition
             From  sys.indexes  As  a
                 Inner   Join  #Objects  As  b  On  b. object_id = a. object_id
             Where  a.type > 0
                     And   Not   Exists ( Select   1   From  sys.key_constraints  Where  parent_object_id = a. object_id   And  unique_index_id = a.index_id)

        

         -- Print
        

         Print   ' Use  ' + Quotename ( db_name ()) + @Enter + ' Go ' + @Enter + ' /* 创建表结构 Andy  ' + Convert ( nvarchar ( 10 ), Getdate (), 120 ) + ' */ ' + @Enter

         Set   @id = 1
         While   @id <= @Rowcount
         Begin
             Select   @objectid = object_id , @ObjectName = name  From  #Objects  Where  id = @id

             Set   @Sql = @Enter + ' --( ' + Rtrim ( @id ) + ' / ' + Rtrim ( @Rowcount ) + ' )  ' + @ObjectName + @Enter + ' If object_id( ''' + Quotename ( @ObjectName ) + ''' ) Is Null ' + @Enter + ' Begin ' + @Enter + @Tab +
                     ' Create Table  ' + Quotename ( @ObjectName ) + @Enter + @Tab + ' ( ' + @Enter
             Select   @Sql = @Sql + @Tab + @Tab + definition + ' , ' + @Enter
                 From  #Columns 
                 Where   object_id = @objectid  
                         And  DefinitionType = 1
                 Group   By  Seq,definition
                 Order   By  Seq
             Set   @sql = Substring ( @sql , 1 , Len ( @sql ) - 3 ) + @Enter + @Tab + ' ) ' + @Enter
             Select   @Sql = @Sql + @Tab + definition + @Enter
                 From  #Columns 
                 Where   object_id = @objectid  
                         And  DefinitionType > 1
                 Group   By  DefinitionType,Seq,definition
                 Order   By  Seq

             Print   Substring ( @sql , 1 , Len ( @sql ) - 2 ) + @Enter + ' End '
             Set   @id = @id + 1
         End

         Print   ' Go '

     Drop   Table  #Columns
     Drop   Table  #Objects
Go

 

 

解决Query Error: [S1000][15233] 无法添加属性。‘dbo.xxx.area_ids‘ 已存在属性‘MS_Description‘。 在数据库操作中,尝试向已存在的对象添加元数据属性(如 'MS_Description')时,可能会遇到属性已存在的错误。解决此问题的方法是先确认并删除现有的冲突属性,然后再重新添加新的属性。具体步骤包括:使用SQL查询确认现有属性,通过条件判断删除冲突的旧属性,最后执行SQL语句添加新的属性描述。这一过程确保了元数据属性的唯一性和正确性,避免了重复定义的问题。 阅读详情

相关推荐

基于ROS2的无人机野生动物巡查系统设计

自主巡检系统是嵌入式人工智能与机器人技术融合的关键应用方向,其核心在于多源感知融合、实时路径规划与端侧智能识别的协同实现。原理上依赖SLAM定位构建环境地图,结合栅格化建模与混合路径算法(如蚁群+BFS)达成全覆盖遍历;技术价值体现在资源受限平台下的确定性响应与时空对齐能力,支撑高鲁棒性野外作业。典型应用场景包括生态监测、禁飞区巡检及小尺度智能安防。本文围绕ROS2 Humble中间件架构、Livox激光雷达与MaixCAM视觉协同、YOLO11n INT8模型端侧部署等关键技术展开,突出嵌入式AI与实时控

weixin_30598047的博客 650

PowerDesigner给数据库添加MS_Description出错

原因:系统函数sp_addextendedproperty 的第四个参数(用户名) 不能为空。但PD在生成的时候却是’’ (空字符串) 解决方法 在PDM时。DataBase &gt;&gt; Edit Current DBMS &gt;&gt; Script &gt;&gt; Object &gt;&gt; Column &gt;&gt; ColumnComment 在value 栏中默认...

weixin_33897722的博客 393

手把手教你用certificate-manager修复Vcenter证书过期问题(附密码重置技巧)

本文详细解析了Vcenter证书过期引发的503服务不可用、密码错误等典型故障现象,并提供了使用certificate-manager工具进行系统性修复的完整步骤。文章重点阐述了证书体系原理、精准诊断方法,并分享了在SSO验证失败时通过vdcadmintool重置密码的关键技巧,帮助管理员快速恢复平台并建立预防性运维策略。

swift5iosmith的博客 460

SQL Server 扩展属性

DROP PROC sp_support_set_sp_description go CREATE PROC sp_support_set_sp_description(@sp_name VARCHAR(500),@sp_description VARCHAR(1000)) AS BEGIN     SET NOCOUNT ON          DECLARE @sp_id

huangyi003的专栏 1114

【图文步骤】EC-Engineer部分操作详细步骤

EC-Engineer部分功能详细使用手册

weixin_42212468的博客 6175

OSPF的7种状态,DR与BDR的基本概念,1、2、3、4、5、7类LSA解析,Stub、NSSA、Totally Stub、Totally NSSA的基本概念与配置

OSPF的7种状态,DR与BDR的基本概念,1、2、3、4、5、7类LSA解析,Stub、NSSA、Totally Stub、Totally NSSA的基本概念与配置

weixin_72194028的博客 3010

PowerDesign 16.0 生成的SQL Server2000 数据库脚本时MS_Description不存在的问题解决

PowerDesign 16.0 生成的SQL Server2000 数据库脚本时MS_Description不存在的问题解决

qq_38472451的博客 282

93.华为路由器:IPSec加密GRE通道(GRE over IPsec)

IPSec加密GRE通道 由于GRE隧道不提供安全性保障,使用ipsec加密gre隧道是现网中比较常用的VPN部署,它的加密方式分为两种: 可以使用IPsec来加密隧道进行传输,叫做IPsec over GRE; 加密数据流后从隧道传输,称为GRE over IPsec。 下面将配置一个简单的IPsec over GRE实验。 一、搭建模拟环境 首先我们先搭建环境,先根据拓扑图把基本的IP地址配好,然后分别在AR1、AR3加两条静态路由,使得两个公网互通。 [AR1]in g0/0/0 [AR

迷逝 1万+

MySQL简单使用实例

1)创建学生表student 要求: (1)属性包括学号(sno)、学生姓名(sname)、年龄(age)、性别(sex)、所在系(dept); (2)学号为表的主码; (3)姓名非空; (4)年龄缺省值为18; (5)性别男或女; 2)创建课程表course (cno, cname, credit, teacher, pcno) 要求: (1)属性包括课程号(cno)、课程名称(cname)、学分(credit)、任课老师(teacher)、选修课(pcno); (2)课程号为表的主码; (

m0_49263811的博客 2873

基于互联网的智能旧衣回收箱设计与实现

本文介绍了基于嵌入式系统的智能旧衣回收箱的设计与实现,涵盖了硬件设计、软件开发、图像识别、物联网连接等方面的内容。通过利用最新的技术,如图像识别、物联网和云计算,实现了智能、便捷的旧衣物回收系统。未来,随着技术的不断进步,智能回收系统将会在环保领域发挥更大的作用。

2201_76125393的博客 908

Spine骨骼动画查看器 - Skeleton Viewer

骨骼动画是现代游戏和动画制作中常用的技术之一。Spine骨骼动画查看器(Skeleton Viewer)是一个官方提供的工具,用于查看和调试Spine骨骼动画。本文将介绍Skeleton Viewer的功能和使用方法,并提供相应的源代码示例。通过Skeleton Viewer,开发者可以直观地查看和调试Spine骨骼动画,包括骨骼结构、动画播放和事件触发等。这有助于提高骨骼动画的质量和效果,并加速开发过程。以上代码演示了如何使用Skeleton Viewer查看和播放Spine骨骼动画。

HsvvDatabase的博客 3463

database.db 文件详解:数据库文件在 SQLite 中的作用与使用

本文解析了Python项目中自动生成的database.db文件的作用和使用方法。该文件是SQLite数据库的默认存储文件,包含表结构、数据记录和索引等信息。文章详细介绍了SQLite的存储原理、查看和操作方法(命令行与可视化工具)、备份策略及常见问题解决方案,并强调数据库管理需严谨,避免数据丢失。掌握.db文件的特性能帮助开发者更高效地进行项目调试和数据库维护。

聚焦学生开发者需求,分享课设毕设项目实战经验、系统开发技巧、数据库设计规范及文档排版实用方法。 2408

基于FPGA的FIR数字滤波器设计

clear;close all fc=1/4;fs=5/16; %输入给定指标 Rp=3;As=60;Fs=2; f=[fc,fs];m=[1,0]; %计算remezord函数所需参数f,m,dev dev=[(10^(Rp/20)-1)/(10^(Rp/20)+1),10^(-As/20)]; [N,fo,mo,W]=remezord(f,m,dev,Fs); %确定remez函数所需参数 hn=remez(N,fo,mo,W);...

FPGA/MATLAB学习教程/源码/项目合作开发 9455

数据仓库中基本概念

数据仓库(Data Warehouse)是一个面向主题的、集成的、稳定的且随时间变化的数据集合,用于 支持管理人员的决策。

libaowenBlog的博客 2677

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

数据库系统概论第2章 关系数据库

举个例子:“班长”属性与本身的主码“学号”属性相对应,因此“班长”是外码。举个例子: SC表中候选码为(学号,课程号) 主属性为学号,课程号。因为候选码可以是两个属性的组合,而主属性是候选码的属性。② 外码取空值 或者 等于某个元组的主码值。① 外码名字可以不一样,含义、域一样。注意:当外码是主属性时,不能取空值。而主属性不能取空值≠候选码不为空。并、差、笛卡尔积、选择、投影。连接=先笛卡尔积+再选择。并、差、交、笛卡尔积。

qq_53826699的博客 919

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

SQLServer错误:过程 sp_addextendedproperty,第 xxx 行对象无效。'dbo.xxx.xxx' 不允许有扩展属性,或对象不存在。...

示例: EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'姓名' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tb_U_Users', @level2type=N'COLUMN',@level...

weixin_30604651的博客 1927

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

关系数据库标准语言SQL(SQL概述、数据定义、创建数据库,索引等)

关系数据库语言SQL 一、SQL概述 SQL(Structured Query Language)结构化查询语言,是关系数据库的标准语言 SQL是一个通用的、功能极强的关系数据库语言。 1 .SQL 的产生与发展 目前,没有一个数据库系统能够支持SQL标准的所有概念和特性 2 .SQL的特点 2.1特点 集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体。 可以独立完成数据库生命周期中的全部活动: - 定义和修改、删除关系模式,定义和删除视图,插入数据,建立数据 - 对数

sjjsaaaa的博客 3963

sql server查询表结构(字段名,数据类型,长度,描述,是否允许为空,是否为主键)

转自:http://www.xxling.com/blog/article/58.aspx

天道酬勤 12万+

Sql Server 快速查看表结构(表描述及字段说明)

快速查看表对应的字段说明,及表字段描述及字段类型 --表字段描述 SELECT tbs.name 表名,ds.value 描述 FROM sys.extended_properties ds LEFT JOIN sysobjects tbs ON ds.major_id=tbs.id WHERE ds.minor_id=0 and tbs.name='Warrant_BaseInfo';--...

luojiayu42的博客 3401

数据库基础(二)

8、关系模型 关系模型的主要特征就是用二维表格表达实体集,表名就是关系名。 属性:二维表格的列 元组:二维表中一行称为一个元组,元组中的每一个属性值称为元组分量。 关系模式:二维表的结构 候选码:如果一个属性集的值能够唯一标识一个关系的元素,又不含有多余的属性,就称它为候选码,一个关系可以有多个候选码。 主键:当一个关系有多个候选码时,可以选出一个作为主键 主属性:包含在任意候选码中的属性。 非主属性:不包含在候选码中的属性 ...

qq_44853355的博客 1164

今天遇到的MSSQL扩展属性的坑(sys.extended_properties)

今天布置好了一个站,一个用了N多年的站,然后测试随便点了几下,说有个地方报错了。 ERR:已添加了具有相同键的项 我草,这么多年的代码居然还有坑,哪些客户难道都没用过这个功能么? 打开代码,原来是EF查询后组装了一个字典Dictionary,K/V值重复了,还是不信,这么多年的代码居然有坑? 然后发现这个代码很久很久之前老大写的工作流的配置,好吧,甩不了锅。。。别逗了,人家早不写代码很多年...

陈熙之的博客 4358

SQL入门学习(1)

转载请说明 SQL指结构化查询语言(Structured Query Language)。具有数据查询, 数据定义, 数据操纵, 数据控制的功能。 数据查询是指在基本表或者视图中获取所需信息;数据定义是指创建数据库 创建数据表;数据操纵是指对数据库中的内容进行增删改等操作;数据控制是指对数据库进行安全性控制或者并发控制。 SQL的基本概念涉及到基本表,视图: 基本表(Base Table ...

qq_43242266的博客 1272

数据库期末总结笔记( 零基础 )--数据库安全性与完整性-范式-E-R图

第四章 数据库安全性与完整性 1.三大完整性约束 基本概念: (1)候选码:一个或一组属性能唯一的标识一个元组,而其子集不能 例:Student表中的学号sno (2)主码:若有多个候选码,则选其中一个为主码 例:SC表里面学号sno和课程号cno (3)外键,也称外码:一个表中一个(多个)属性,不是自身的主码,且这个属性和另一个表中的主码属性是同一个属性,则这个(组)属性称为外码 例:Student表中的主键是Sno, Course表中的主码是课程号, 而Sc表中的主键是sno和课程号cno(两个组

gl620321的博客 1319

7.数据库完整性

数据库完整性 数据库的完整性: (1)数据的正确性:是指数据是符合现实世界语义,反映了当前实际状况的。 例如:学生的学号必须唯一;性别只能是男或女;成绩的取值范围为 0~100。 (2)数据的相容性:是指数据库同一对象在不同关系表中的数据是符合逻辑的。 例如:学生所选的课程必须是学校开设的课程;学生所在的院系必须是学校已成立的院系。 数据的完整性和安全性是两个不同概念: (1)数据的完整性:防止数据库中存在不符合语义的数据,...

qq_45783047的博客 2009

SQL总结之数据库元数据(MSSQL)

数据库元数据就是指定义数据库各类对象结构的数据。 常见的数据库对象,包括:数据库表、触发器,索引,视图,存储过程,函数。 掌握数据库元数据,就需要深入地理解数据库的结构组成。 那么掌握数据库元数据有什么用呢?一方面,在应用设计时能够充分地利用数据库元数据。另一方面,深入理解了数据库组织结构,再去理解数据访问相关框架的实现原理会更加容易。

gezhonglei2007的专栏 9335
上一篇: SQL模板资源管理器,你用了吗?
下一篇: 查看数据库、表、索引的物理存储情况
kerrycode
博客等级 码龄17年 6粉丝 11原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值