Database Journal
MS SQL Oracle DB2 Access MySQL PostgreSQL Sybase PHP SQL Etc SQL Scripts & Samples Links Database Forum

» Database Journal Home
» Database Articles
» Database Tutorials
MS SQL
Oracle
DB2
MS Access
MySQL
» RESOURCES
Database Tools
SQL Scripts & Samples
Links
» Database Forum
» Sitemap
Free Newsletters:
DatabaseDaily  
News Via RSS Feed


follow us on Twitter
Database Journal |DBA Support |SQLCourse |SQLCourse2
 

Featured Database Articles

MS SQL

Posted Jul 2, 2001

SQL Server 7.0 Undocumented System Tables

By Alexander Chigrik


Introduction
Undocumented system tables
  • syscursorcolumns
  • syscursorrefs
  • syscursors
  • syscursortables
  • sysfiles1
  • sysxlogins

  • Introduction

    In this article, I want to tell you about undocumented system tables
    shipped with SQL Server 7.0. These tables are used by some system
    stored procedures and stored in the master database (only sysfiles1
    system table is stored in each database).
    

    Undocumented system tables

    
    

    syscursorcolumns

    Contains the list of server cursor's columns. This table is stored
    in the master database. syscursorcolumns table is used by
    sp_describe_cursor_columns system stored procedure to report the
    attributes of the columns in the result set of a server cursor.
    
    
    
    
    Column name Data type Description
    cursor_handle int A unique value for the cursor within the scope of the server.
    column_name sysname, nullable The column name. The column is NULL if the column was specified without an accompanying AS clause.
    ordinal_position int Relative position of the column. The first column is in position 1. The value for any hidden columns is 0.
    column_characteristics_flags    int A bitmask indicating the information stored in DBCOLUMNFLAGS in OLE DB. Can be one of the following:
    1 = Bookmark
    2 = Fixed length
    4 = Nullable
    8 = Row versioning
    16 = Updatable column (set for projected columns of a cursor that has no FOR UPDATE clause and, if there is such a column, can be only one per cursor).
    column_size int Maximum possible size for a value in this column.
    data_type_sql smallint Number indicating the SQL Server data type of the column.
    column_precision tinyint Maximum precision of the column as per the bPrecision value in OLE DB.
    column_scale tinyint Number of digits to the right of the decimal point for the numeric or decimal data types as per the bScale value in OLE DB.
    order_position int If the column participates in the ordering of the result set, the position of the column in the order key relative to the leftmost column.
    order_direction varchar(1), nullable A = The column is in the order key and the ordering is ascending.
    D = The column is in the order key and the ordering is descending.
    NULL = The column does not participate in ordering.
    hidden_column smallint If a value of 0, this column appears in the select list. The value 1 is reserved for future use.
    columnid int Column ID of the base column. If the result set column was built from an expression, columnid is -1.
    objectid int Object ID of the base table supplying the column. If the result set column was built from an expression, objectid is -1.
    dbid int ID of the database containing the base table supplying the column. If the result set column was built from an expression, dbid is -1.
    dbname sysname, nullable Name of the database containing the base table supplying the column. If the result set column was built from an expression, dbname is NULL.

    syscursorrefs

    Contains one row for each server cursor. This table is stored in the
    master database and contains cursor name, cursor scope (local
    or global) and cursor handler. syscursorrefs table is used by
    sp_describe_cursor, sp_describe_cursor_columns,
    sp_describe_cursor_tables and sp_cursor_list system
    stored procedures to get cursor name, cursor scope and cursor handler.
    
    
    Column name Data type Description
    reference_name sysname, nullable Name used to refer to the cursor.
    cursor_scope tinyint 1 = LOCAL
    2 = GLOBAL
    cursor_handl int A unique value for the cursor within the scope of the server.

    syscursors

    Contains the attributes of a server cursor. This table is stored in the
    master database. syscursors table is used by
    sp_describe_cursor system stored procedures to report the attributes
    of a server cursor and sp_cursor_list system stored procedures to
    report the attributes of server cursors currently open for the connection.
    
    
    Column name Data type Description
    cursor_handle int A unique value for the cursor within the scope of the server.
    cursor_name sysname, nullable Name of the cursor.
    status int Same values as reported by the CURSOR_STATUS system function:
    1 = The cursor referenced by the cursor name or
    variable is open. If the cursor is insensitive, static, or keyset, it has at least one row. If the cursor is dynamic, the result set has zero or more rows.
    0 = The cursor referenced by the cursor name or
    variable is open but has no rows. Dynamic cursors never return this value.
    -1 = The cursor referenced by the cursor name or variable is closed.
    -2 = Applies only to cursor variables. There is no cursor assigned to the variable. Possibly, an OUTPUT parameter assigned a cursor to the variable, but the stored procedure closed the cursor before returning.
    -3 = A cursor or cursor variable with the specified name does not exist, or the cursor variable has not had a cursor allocated to it.
    model tinyint 1 = Insensitive (or static)
    2 = Keyset
    3 = Dynamic
    4 = Fast Forward
    concurrency tinyint 1 = Read-only
    2 = Scroll locks
    3 = Optimistic
    scrollable tinyint 0 = Forward-only
    1 = Scrollable
    open_status tinyint 0 = Closed
    1 = Open
    cursor_rows decimal(10,0) Number of qualifying rows in the result set.
    fetch_status smallint Status of the last fetch on this cursor.
    0 = Fetch successful.
    -1 = Fetch failed or is beyond the bounds of the
    cursor.
    -2 = The requested row is missing.
    -9 = There has been no fetch on the cursor.
    column_count smallint Number of columns in the cursor result set.
    row_count decimal(10,0) Number of rows affected by the last operation on the cursor.
    last_operation tinyint Last operation performed on the cursor:
    0 = No operations have been performed on the cursor.
    1 = OPEN
    2 = FETCH
    3 = INSERT
    4 = UPDATE
    5 = DELETE
    6 = CLOSE
    7 = DEALLOCATE

    syscursortables

    Contains the base tables referenced by a server cursor. This table
    is stored in the master database. syscursortables table is
    used by
    sp_describe_cursor_tables system stored procedures to report the
    base tables referenced by a server cursor.
    
    
    Column name Data type Description
    cursor_handle int A unique value for the cursor within the scope of the server.
    table owner sysname, nullable User ID of the table owner.
    table_name sysname, nullable Name of the base table.
    optimizer_hints smallint Bitmap consisting of one or more of:
    1 = Row-level locking (ROWLOCK)
    4 = Page-level locking (PAGELOCK)
    8 = Table Lock (TABLOCK)
    16 = Exclusive table lock (TABLOCKX)
    32 = Update lock (UPDLOCK)
    64 = No lock (NOLOCK)
    128 = Fast first-row option (FASTFIRST)
    4096 = Read repeatable semantic when used
    with declare cursor (HOLDLOCK)
    lock_type smallint Scroll-lock type requested either explicitly or implicitly for each base table that underlies this cursor. The value can be:
    0 = None
    1 = Shared
    3 = Update
    server_name sysname, nullable Name of the linked server the table resides on. NULL if OPENQUERY or OPENROWSET are used.
    objectid int Object ID of the table. 0 if OPENQUERY or OPENROWSET are used.
    dbid int ID of the database the table resides in. 0 if OPENQUERY or OPENROWSET are used.
    dbname sysname, nullable Name of the database the table resides in. NULL if OPENQUERY or OPENROWSET are used.

    sysfiles1

    Contains one row for each file in a database. Each database contains
    sysfiles1 system table.
    
    
    Column name Data type Description
    status int For internal use only.
    fileid smallint File identification number unique for each database.
    name nchar(128) Logical name of the file.
    filename nchar(260) Name of the physical device, including the full path of the file.

    sysxlogins

    Contains each Windows NT account or group name and each SQL Server
    login name. This table is stored in the master database.
    
    
    Column name Data type Description
    srvid smallint, nullable Server ID.
    sid varbinary(85), nullable Security identifier.
    xstatus smallint For internal use only.
    xdate1 datetime Date the login was added.
    xdate2 datetime Date the login was updated.
    name sysname, nullable Login name.
    password varbinary(256), nullable Password of the user (may be NULL).
    dbid smallint ID of the database.
    language sysname, nullable User's default language.
    isrpcinmap smallint, nullable For internal use only.
    ishqoutmap smallint, nullable For internal use only.
    selfoutmap smallint, nullable For internal use only.


    » See All Articles by Columnist Alexander Chigrik




    MS SQL Archives

    Comment and Contribute

     


    (Maximum characters: 1200). You have characters left.

     

     




    Latest Forum Threads
    MS SQL Forum
    Topic By Replies Updated
    SQL 2005: SSIS: Error using SQL Server credentials poverty 3 August 17th, 07:43 AM
    Need help changing table contents nkawtg 1 August 17th, 03:02 AM
    SQL Server Memory confifuration bhosalenarayan 2 August 14th, 05:33 AM
    SQL Server Primary Key and a Unique Key katty.jonh 2 July 25th, 10:36 AM


















    Thanks for your registration, follow us on our social networks to keep up-to-date