Class: ActiveRecord::ConnectionAdapters::SQLServerAdapter
Constant Summary
collapse
- ADAPTER_NAME =
'SQLServer'.freeze
ActiveRecord::ConnectionAdapters::SQLServer::Version::VERSION
ActiveRecord::ConnectionAdapters::SQLServer::Quoting::QUOTED_FALSE, ActiveRecord::ConnectionAdapters::SQLServer::Quoting::QUOTED_STRING_PREFIX, ActiveRecord::ConnectionAdapters::SQLServer::Quoting::QUOTED_TRUE
ActiveRecord::ConnectionAdapters::SQLServer::Showplan::OPTIONS, ActiveRecord::ConnectionAdapters::SQLServer::Showplan::OPTION_ALL, ActiveRecord::ConnectionAdapters::SQLServer::Showplan::OPTION_TEXT, ActiveRecord::ConnectionAdapters::SQLServer::Showplan::OPTION_XML
Instance Attribute Summary collapse
Instance Method Summary
collapse
#quote_column_name, #quote_default_value, #quote_string, #quoted_date, #quoted_false, #quoted_true, #unquoted_false, #unquoted_true
#begin_db_transaction, #begin_isolated_db_transaction, #case_sensitive_modifier, #charset, #commit_db_transaction, #create_database, #create_savepoint, #current_database, #drop_database, #exec_delete, #exec_insert, #exec_query, #exec_update, #execute, #execute_procedure, #newid_function, #newsequentialid_function, #recreate_database, #recreate_database!, #release_savepoint, #rollback_db_transaction, #rollback_to_savepoint, #select_rows, #set_transaction_isolation_level, #supports_statement_cache?, #transaction_isolation_levels, #use_database, #user_options, #user_options_dateformat, #user_options_isolation_level, #user_options_language, #with_identity_insert_enabled
#explain
#change_column, #change_column_default, #change_column_null, #columns, #columns_for_distinct, #create_table, #extract_foreign_key_action, #foreign_keys, #indexes, #native_database_types, #new_column, #remove_column, #remove_index!, #rename_column, #rename_index, #rename_table, #table_exists?, #tables, #type_to_sql, #views
#column_name_length, #columns_per_multicolumn_index, #columns_per_table, #in_clause_length, #index_name_length, #indexes_per_table, #joins_per_query, #sql_query_length, #table_alias_length, #table_name_length
Constructor Details
#initialize(connection, logger, pool, config) ⇒ SQLServerAdapter
Returns a new instance of SQLServerAdapter.
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 45
def initialize(connection, logger, pool, config)
super(connection, logger, pool)
@schema_cache = SQLServer::SchemaCache.new self
@visitor = Arel::Visitors::SQLServer.new self
@prepared_statements = true
@config = config
@connection_options = config
connect
@sqlserver_azure = !!(select_value('SELECT @@version', 'SCHEMA') =~ /Azure/i)
initialize_dateformatter
use_database
end
|
Instance Attribute Details
#spid ⇒ Object
Returns the value of attribute spid.
38
39
40
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 38
def spid
@spid
end
|
Instance Method Details
#active? ⇒ Boolean
Abstract Adapter (Connection Management) ================== #
127
128
129
130
131
132
133
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 127
def active?
return false unless @connection
raw_connection_do 'SELECT 1'
true
rescue TinyTds::Error, ODBC::Error
false
end
|
#adapter_name ⇒ Object
70
71
72
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 70
def adapter_name
ADAPTER_NAME
end
|
#disable_referential_integrity ⇒ Object
118
119
120
121
122
123
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 118
def disable_referential_integrity
do_execute "EXEC sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'"
yield
ensure
do_execute "EXEC sp_MSforeachtable 'ALTER TABLE ? CHECK CONSTRAINT ALL'"
end
|
#disconnect! ⇒ Object
141
142
143
144
145
146
147
148
149
150
151
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 141
def disconnect!
super
@spid = nil
case @connection_options[:mode]
when :dblib
@connection.close rescue nil
when :odbc
@connection.disconnect rescue nil
end
@connection = nil
end
|
#inspect ⇒ Object
183
184
185
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 183
def inspect
"#<#{self.class} version: #{version}, mode: #{@connection_options[:mode]}, azure: #{sqlserver_azure?.inspect}>"
end
|
#pk_and_sequence_for(table_name) ⇒ Object
Abstract Adapter (Misc Support) =========================== #
160
161
162
163
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 160
def pk_and_sequence_for(table_name)
pk = primary_key(table_name)
pk ? [pk, nil] : nil
end
|
#primary_key(table_name) ⇒ Object
165
166
167
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 165
def primary_key(table_name)
identity_column(table_name).try(:name) || schema_cache.columns(table_name).find(&:is_primary?).try(:name)
end
|
#reconnect! ⇒ Object
135
136
137
138
139
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 135
def reconnect!
super
disconnect!
connect
end
|
#reset! ⇒ Object
153
154
155
156
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 153
def reset!
reset_transaction
do_execute 'IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION'
end
|
#schema_creation ⇒ Object
66
67
68
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 66
def schema_creation
SQLServer::SchemaCreation.new self
end
|
#sqlserver? ⇒ Boolean
SQLServer Specific (DB Reflection) ======================== #
171
172
173
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 171
def sqlserver?
true
end
|
#sqlserver_azure? ⇒ Boolean
175
176
177
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 175
def sqlserver_azure?
@sqlserver_azure
end
|
#supports_bulk_alter? ⇒ Boolean
90
91
92
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 90
def supports_bulk_alter?
false
end
|
#supports_count_distinct? ⇒ Boolean
82
83
84
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 82
def supports_count_distinct?
true
end
|
#supports_ddl_transactions? ⇒ Boolean
86
87
88
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 86
def supports_ddl_transactions?
true
end
|
#supports_explain? ⇒ Boolean
102
103
104
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 102
def supports_explain?
true
end
|
#supports_foreign_keys? ⇒ Boolean
114
115
116
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 114
def supports_foreign_keys?
true
end
|
#supports_index_sort_order? ⇒ Boolean
94
95
96
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 94
def supports_index_sort_order?
true
end
|
#supports_migrations? ⇒ Boolean
74
75
76
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 74
def supports_migrations?
true
end
|
#supports_partial_index? ⇒ Boolean
98
99
100
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 98
def supports_partial_index?
true
end
|
#supports_primary_key? ⇒ Boolean
78
79
80
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 78
def supports_primary_key?
true
end
|
#supports_transaction_isolation? ⇒ Boolean
106
107
108
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 106
def supports_transaction_isolation?
true
end
|
#supports_views? ⇒ Boolean
110
111
112
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 110
def supports_views?
true
end
|
#valid_type?(type) ⇒ Boolean
Abstract Adapter ========================================== #
62
63
64
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 62
def valid_type?(type)
!native_database_types[type].nil?
end
|
#version ⇒ Object
179
180
181
|
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 179
def version
self.class::VERSION
end
|