Module: Sequel::MSSQL::DatabaseMethods
- Included in:
- ADO::MSSQL::DatabaseMethods, JDBC::MSSQL::DatabaseMethods, ODBC::MSSQL::DatabaseMethods, TinyTDS::Database
- Defined in:
- lib/sequel/adapters/shared/mssql.rb
Constant Summary collapse
- AUTO_INCREMENT =
'IDENTITY(1,1)'.freeze
- SERVER_VERSION_RE =
/^(\d+)\.(\d+)\.(\d+)/.freeze
- SERVER_VERSION_SQL =
"SELECT CAST(SERVERPROPERTY('ProductVersion') AS varchar)".freeze
- SQL_BEGIN =
"BEGIN TRANSACTION".freeze
- SQL_COMMIT =
"COMMIT TRANSACTION".freeze
- SQL_ROLLBACK =
"IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION".freeze
- SQL_ROLLBACK_TO_SAVEPOINT =
'IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION autopoint_%d'.freeze
- SQL_SAVEPOINT =
'SAVE TRANSACTION autopoint_%d'.freeze
- DECIMAL_TYPE_RE =
The types to check for 0 scale to transform :decimal types to :integer.
/number|numeric|decimal/io
Instance Attribute Summary collapse
-
#mssql_unicode_strings ⇒ Object
Whether to use N” to quote strings, which allows unicode characters inside the strings.
Instance Method Summary collapse
-
#database_type ⇒ Object
Microsoft SQL Server uses the :mssql type.
-
#global_index_namespace? ⇒ Boolean
Microsoft SQL Server namespaces indexes per table.
-
#indexes(table, opts = {}) ⇒ Object
Use the system tables to get index information.
-
#server_version(server = nil) ⇒ Object
The version of the MSSQL server, as an integer (e.g. 10001600 for SQL Server 2008 Express).
-
#supports_savepoints? ⇒ Boolean
MSSQL supports savepoints, though it doesn’t support committing/releasing them savepoint.
-
#supports_transaction_isolation_levels? ⇒ Boolean
MSSQL supports transaction isolation levels.
-
#supports_transactional_ddl? ⇒ Boolean
MSSQL supports transaction DDL statements.
-
#tables(opts = {}) ⇒ Object
Microsoft SQL Server supports using the INFORMATION_SCHEMA to get information on tables.
-
#views(opts = {}) ⇒ Object
Microsoft SQL Server supports using the INFORMATION_SCHEMA to get information on views.
Instance Attribute Details
#mssql_unicode_strings ⇒ Object
Whether to use N” to quote strings, which allows unicode characters inside the strings. True by default for compatibility, can be set to false for a possible performance increase. This sets the default for all datasets created from this Database object.
20 21 22 |
# File 'lib/sequel/adapters/shared/mssql.rb', line 20 def mssql_unicode_strings @mssql_unicode_strings end |
Instance Method Details
#database_type ⇒ Object
Microsoft SQL Server uses the :mssql type.
27 28 29 |
# File 'lib/sequel/adapters/shared/mssql.rb', line 27 def database_type :mssql end |
#global_index_namespace? ⇒ Boolean
Microsoft SQL Server namespaces indexes per table.
32 33 34 |
# File 'lib/sequel/adapters/shared/mssql.rb', line 32 def global_index_namespace? false end |
#indexes(table, opts = {}) ⇒ Object
Use the system tables to get index information
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/sequel/adapters/shared/mssql.rb', line 37 def indexes(table, opts={}) m = output_identifier_meth im = input_identifier_meth indexes = {} .from(:sys__tables___t). join(:sys__indexes___i, :object_id=>:object_id). join(:sys__index_columns___ic, :object_id=>:object_id, :index_id=>:index_id). join(:sys__columns___c, :object_id=>:object_id, :column_id=>:column_id). select(:i__name, :i__is_unique, :c__name___column). where{{t__name=>im.call(table)}}. where(:i__is_primary_key=>0, :i__is_disabled=>0). order(:i__name, :ic__index_column_id). each do |r| index = indexes[m.call(r[:name])] ||= {:columns=>[], :unique=>(r[:is_unique] && r[:is_unique]!=0)} index[:columns] << m.call(r[:column]) end indexes end |
#server_version(server = nil) ⇒ Object
The version of the MSSQL server, as an integer (e.g. 10001600 for SQL Server 2008 Express).
58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/sequel/adapters/shared/mssql.rb', line 58 def server_version(server=nil) return @server_version if @server_version @server_version = synchronize(server) do |conn| (conn.server_version rescue nil) if conn.respond_to?(:server_version) end unless @server_version m = SERVER_VERSION_RE.match(fetch(SERVER_VERSION_SQL).single_value.to_s) @server_version = (m[1].to_i * 1000000) + (m[2].to_i * 10000) + m[3].to_i end @server_version end |
#supports_savepoints? ⇒ Boolean
MSSQL supports savepoints, though it doesn’t support committing/releasing them savepoint
71 72 73 |
# File 'lib/sequel/adapters/shared/mssql.rb', line 71 def supports_savepoints? true end |
#supports_transaction_isolation_levels? ⇒ Boolean
MSSQL supports transaction isolation levels
76 77 78 |
# File 'lib/sequel/adapters/shared/mssql.rb', line 76 def supports_transaction_isolation_levels? true end |
#supports_transactional_ddl? ⇒ Boolean
MSSQL supports transaction DDL statements.
81 82 83 |
# File 'lib/sequel/adapters/shared/mssql.rb', line 81 def supports_transactional_ddl? true end |
#tables(opts = {}) ⇒ Object
Microsoft SQL Server supports using the INFORMATION_SCHEMA to get information on tables.
87 88 89 |
# File 'lib/sequel/adapters/shared/mssql.rb', line 87 def tables(opts={}) information_schema_tables('BASE TABLE', opts) end |
#views(opts = {}) ⇒ Object
Microsoft SQL Server supports using the INFORMATION_SCHEMA to get information on views.
93 94 95 |
# File 'lib/sequel/adapters/shared/mssql.rb', line 93 def views(opts={}) information_schema_tables('VIEW', opts) end |